Сообщение об ошибке (проверка) не отображается при отправке с помощью ENTER (c # / asp.net) - PullRequest
0 голосов
/ 15 февраля 2012

В моем приложении вы вводите число в поле ввода, которое проверяется на стороне клиента различными валидаторами. У меня есть внешний JS-файл с кодом, который помещает поле ввода в фокус и выбирает предыдущее введенное число. Я также включил «defaultbutton» в свой тег формы, чтобы набирать новый номер и отправлять форму было легко и быстро (просто введите снова и нажмите ENTER)

Все отлично работает, кроме одной вещи. При наборе номера, выходящего за пределы допустимого диапазона, или при оставлении поля ввода пустым, сообщение об ошибке отображается только при нажатии кнопки «Отправить» с помощью кнопки мыши. Если нажать ENTER, рядом с полем ввода отображается «*», но не сообщение об ошибке.

Надеюсь, приведенного ниже кода достаточно, чтобы понять, что не так.

Заранее спасибо.

<form id="form1" runat="server" defaultbutton="btnCheckNr">
...
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" 
    <asp:TextBox ID="inputBox" runat="server" Height="22px" Width="75px" />

    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="inputBox" Display="Dynamic" 
            ErrorMessage="Type a number between 1 and 100." SetFocusOnError="True">*</asp:RequiredFieldValidator>

        <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="Skriv ett heltal mellan 1 och 100." Text="*"
            MaximumValue="100" MinimumValue="1" Type="Integer" ControlToValidate="inputBox" Display="Dynamic"></asp:RangeValidator>

    <asp:Button ID="btnCheckNr" runat="server" Text="Skicka gissning" onclick="btnCheckNr_Click" />

...
</form>

JS:

var Capsule = {

    init: function() {
        var input = $('#inputBox');

        if (!input.is(":disabled")) {
            input.focus();
            input.select();
        }
    }
}

window.onload = Capsule.init;

1 Ответ

2 голосов
/ 15 февраля 2012

Исправьте меня, если я ошибаюсь, но похоже, что ваш валидатор диапазона должен быть изменен так же, как и требуемый валидатор поля.

Разве это не должно быть так?

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="inputBox" Display="Dynamic" ErrorMessage="*" SetFocusOnError="True"></asp:RequiredFieldValidator>

<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="Skriv ett heltal mellan 1 och 100." MaximumValue="100" MinimumValue="1" Type="Integer" ControlToValidate="inputBox" Display="Dynamic"></asp:RangeValidator>
...