jquery validate: добавление обязательного правила с настраиваемым сообщением на основе того, имеет ли значение другое поле формы - PullRequest
2 голосов
/ 02 марта 2010

Я знаю, что это похоже на повторный вопрос, но я прочитал все остальные, и они не совсем одинаковые :(

У меня есть некоторые выпадающие списки, и если у них есть что-то другое, тогда выбирается опция со значением "0", тогда я хочу, чтобы обязательное поле Expiry Date было обязательным.

Я попытался поместить правило в класс объектов и использовать функцию rules ('add'). Вот где я сейчас нахожусь:

$('[id^=ExpiryDate]').each(function() {

    $(this).rules('add',
    { required: function() {
        if ($('#q' + id).val() == '0') {
            return false;
        }
        else {
            return true;
        }
    } 
    }
);

мои поля с датой истечения срока действия идентифицируются как "ExpiryDate1", "ExpiryDate2", а соответствующие раскрывающиеся списки обозначаются как "q1" и "q2".

это заставляет мои сценарии терпеть неудачу. это не дает никаких ошибок в консоли ошибок или firebug. но он не выполняет никакой JavaScript, который появляется после него.

У меня такое чувство, что это что-то действительно очевидное и глупое, что я скучаю. но я смотрю на этот код уже пару часов и не могу его найти!

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

1 Ответ

4 голосов
/ 02 марта 2010

Попробуйте это:

$('[id^=ExpiryDate]').each(function() {
  var id = $(this).attr('id').replace('ExpiryDate','');
  $(this).rules('add', { 
    required: function() {
      return $('#q' + id).val() !== '0';
    } 
  }
);

В настоящее время ваш id не определен, поэтому он просто не находит никаких элементов. Остальное только укороченная версия.

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