Включение - но не запуск - RequiredValidator с использованием jQuery / javascript - PullRequest
5 голосов
/ 14 июня 2011

У меня есть форма, возможно, с 10 полями.Одним из этих полей является флажок, флажок по умолчанию не задан, а количество полей в форме включено + обязательно только в том случае, если этот флажок установлен.Я успешно выяснил, как вызвать ValidatorEnable (requiredFieldValidator, true), чтобы справиться с этим (я проверил множество вопросов StackOverflow по этому вопросу).

 function toggleStatus() {
          if ($('#ctl00_main_chkContactMe').is(':checked')) {
              $('#elementsToOperateOn :input').removeAttr('disabled');
              $('#elementsToOperateOn label').removeClass('off');
              ValidatorEnable($("[id$=RequiredFieldValidator1]")[0], true);
              ValidatorEnable($("[id$=RequiredFieldValidator2]")[0], true);
          } else {
              $('#elementsToOperateOn :input').attr('disabled', true);
              $('#elementsToOperateOn label').addClass('off');
              ValidatorEnable($("[id$=RequiredFieldValidator1]")[0], false);
              ValidatorEnable($("[id$=RequiredFieldValidator2]")[0], false);
          }
      }

Однако у меня возникла проблема.пока не вижу адреса.Когда мой пользователь установил флажок и теперь поля включены и обязательны для заполнения, мой валидатор немедленно запускает сообщение «Это поле обязательно для заполнения».Это еще до того, как пользователь успел что-то напечатать, так что это не очень хороший пользовательский опыт.Что я могу сказать Валидатору, чтобы он знал, даже если я его включаю: «Это поле еще не имеет фокуса, поэтому не показывайте сообщение об ошибке, пока кто-то сознательно не оставит его пустым»?

Ответы [ 3 ]

12 голосов
/ 16 июня 2011

У меня была та же проблема, и я решил ее с помощью этого кода:

var myValidator = document.getElementById('<%=myValidator.ClientID %>');
ValidatorEnable(myValidator, true);
myValidator.isvalid = true;
ValidatorUpdateDisplay(myValidator);

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

Вы также можете попробовать эту функцию:

function myValidatorEnabler(validator, enable) {   
    validator.enabled = enable;
    ValidatorUpdateDisplay(validator);
}
0 голосов
/ 08 февраля 2013

См. По умолчанию ваш Обязательный полевой валидатор включен (если нет, то сделайте это).Поэтому используйте только те условия, которые требуют его отключения, и все готово.

0 голосов
/ 14 июня 2011

Не включайте их, пока только перед отправкой, я думаю, что вы должны иметь возможность включить их для отправки, вместо этого используя функцию javascript, вызываемую с помощью RegisterOnSubmitStatement, она будет срабатывать до проверки afaik.

http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registeronsubmitstatement.aspx

Это избавит вас от необходимости отправлять обратно.

...