JQueryValidate - Обязательное поле - зависит не работает

С jQueryValidate, я пытаюсь сделать поле обязательным только в том случае, если другое конкретное поле пуст. Итак, после поиска в Интернете я сделал это:

rules: {
     marque: {
          required: {
               depends: function() {
                    if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) {
                         return true;
                     }
                     else {
                         return false;
                     }
               }
          }
     }
}

К сожалению, он не работает. Но если я это сделаю:

depends: function() {
     if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) {
          alert("Here!");
          return true;
      }
      else {
           return false;
      }
}

Появится окно предупреждения. Итак, мой тест, похоже, работает. Может ли кто-нибудь сказать мне, что я сделал не так? Я использую jQuery 1.8.3 и qTip2 с jQueryValidate. Большое вам спасибо!

Ответ 1

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

marque: {
    required: true;
}

просто. Появляется ли сообщение об ошибке? Если да, попробуйте это

marque: {
    required: {
        depends: function () { return true; /* or false */ }
    }
}

Ответ 2

Вы действительно сможете сделать это без опции depends, просто заставьте функцию работать непосредственно с объектом required:

rules: {
     marque: {
          required:  function() {
                 if (($('#add_marque').val() == "Ajouter une marque" && (('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) {
                     return true;
                 }
                 else {
                     return false;
                 }
          }
     }
}

Смотрите рабочий, более простой пример здесь: http://jsfiddle.net/ryleyb/3hqH6/1/

Ответ 3

required: {
                    depends:function (element) {
                        if ($('#inter').val() == '11' && $('#inter_rson').val() == '8') {
                            return true;
                        } else if ($('#inter').val() != '11' && $('#inter_rson').val() == '8') {
                            return true;
                        } else if ($('#inter').val() == '11' && $('#inter_rson').val() != '8') {
                            return true
                        } else {
                            return false;
                        }
                     }
                }

зависит, работает как очарование, когда элемент зависит от другого значения, как говорит Август Миллер. Если вы не используете зависимости, вы можете застрять на экране с ошибкой проверки.