RequiredFieldValidator требует, чтобы пользователь дважды щелкнул - PullRequest
7 голосов
/ 17 августа 2011

У меня есть простая веб-форма с текстовым полем и подключенным к ней RequiredFieldValidator. При возникновении ошибки RequiredFieldValidator пользователь должен дважды нажать кнопку «Отправить», чтобы опубликовать форму. Первый щелчок очищает ошибку, второй фактически запускает событие нажатия кнопки. Это ожидаемое поведение?

<asp:RequiredFieldValidator ID="reqFieldCloseComment" ControlToValidate="tbCloseComment" ValidationGroup="ChangeStatus" ErrorMessage="Please enter a reason" Display="Dynamic" runat="server"></asp:RequiredFieldValidator>
            <asp:TextBox ID="tbCloseComment" runat="server" CausesValidation="true" TextMode="MultiLine" Height="107px" Width="400px"></asp:TextBox>

        <asp:Button ID="btnCloseRequestFinal" Text="Finish" CssClass="CloseReqButton" runat="server" ValidationGroup="ChangeStatus" />

Я попытался добавить CausesValidation в текстовое поле в соответствии с предложением, найденным в поиске Google, но это не помогло.

РЕДАКТИРОВАТЬ Кажется, что это не всегда должен быть двойной щелчок, чтобы запустить событие. Пока текст вводится в текстовое поле, а затем фокус убирается из текстового поля, сообщение об ошибке RequiredFieldValidator исчезает, а для формы требуется только один щелчок.

Ответы [ 2 ]

6 голосов
/ 21 июня 2012

У меня была такая же проблема с CompareValidator, и я обнаружил, что проблема исчезла, когда я изменил свойство Display с Динамический на Статический .Надеюсь, это поможет

1 голос
/ 17 августа 2011

Это происходит потому, что код, который очищает сообщение об ошибке, запускается, когда текстовое поле теряет фокус.Итак, что происходит:

  1. Вы вводите текст в поле
  2. Вы нажимаете кнопку, которая вызывает событие onblur в текстовом поле, запуская код для проверки поляснова введите значение и удалите сообщение об ошибке
  3. Теперь нет ошибок при проверке, поэтому повторное нажатие кнопки отправляет форму.

Когда вы сначала нажимаете клавишу табуляции (или в основном делаетевсе, что отвлекает внимание от текстового поля), затем этот скрипт onblur запускается и сбрасывает ошибку, так что при нажатии кнопки отправки он готов к работе.

...