Как не запускать RequiredFieldValidator в скрытом поле (TextBox) - PullRequest
2 голосов
/ 19 апреля 2011

Я думаю, что это общая проблема. У меня есть форма, где я показываю / скрываю поля динамически, используя jQuery, в зависимости от некоторых переключателей.

У меня есть RequiredFieldValidator на всех полях, но я не хочу, чтобы они запускались, если их ControlToValidate скрыт (с использованием jQuery).

Это возможно? Заранее спасибо.

РЕДАКТИРОВАТЬ: Вот решение , благодаря Марек. Это может быть не очень очевидно, если у вас странные идентификаторы клиента из-за MasterPages

Это ASPX

<asp:TextBox ID="txtName" runat="server" />
<asp:RequiredFieldValidator ID="vldName" ControlToValidate="txtName" runat="server" ErrorMessage="You must enter Name!" />
...
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />

Это jQuery

$(function() {
  $('#ctl00_cphContent_btnSubmit').click(function() {
    if (!$('#ctl00_cphContent_txtName').is(':visible'))
      ValidatorEnable(ctl00_cphContent_vldName, false);
  });
});

Надеюсь, это облегчит кому-то жизнь

Ответы [ 2 ]

4 голосов
/ 19 апреля 2011

Если я правильно помню, есть функция с именем ValidatorEnable(validatorClientId, isEnabled), которая позволяет отключать / включать валидаторы ASP.NET через javascript. Вы можете использовать jQuery прямо перед отправкой формы, чтобы отключить все невидимые валидаторы.

Некоторая документация по API на стороне клиента доступна от валидаторов здесь http://msdn.microsoft.com/en-us/library/aa479045.aspx

0 голосов
/ 19 апреля 2011

Эй, вы можете установить элемент управления для проверки свойства из кода C #, когда вы устанавливаете видимость из кода C #. Это решит вашу проблему.

if ($('#input-name').length) {  
       // do something

}

Теперь это решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...