Получение ошибки при попытке проверить поля, которые зависят от другого параметра, с помощью плагина jQuery Validate - PullRequest
1 голос
/ 14 апреля 2011

Я использую jQuery Validate для формы. Мне нужно добавить некоторые функции, поэтому требуется дополнительное поле, если в раскрывающемся меню выбора / выбора выбрана конкретная опция.

Вот пример, который они предоставляют на веб-сайте jQuery, чтобы требовать поле certrain, если опция отмечена флажком (http://docs.jquery.com/Plugins/Validation/validate#options):

$(".selector").validate({
   rules: {
     contact: {
       required: true,
       email: {
         depends: function(element) {
           return $("#contactform_email:checked")
         }
       }
     }
   }
})

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

Uncaught TypeError: Невозможно вызвать метод 'вызов' из неопределенного

У меня есть пример, размещенный на JSFiddle. Если бы кто-то мог взглянуть, я был бы очень признателен. Мне нужно, чтобы это работало как можно скорее!

http://jsfiddle.net/2EfPZ/

Ответы [ 2 ]

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

Ошибка возникает, потому что вам нужно связать функцию depends с определенным правилом проверки:

$form.validate({
    rules: {
        favoriteSport: {
            required: true
        },
        position: {
            required: {
                depends: function(element) {
                    return $('#favoriteSport').val() === '1';
                }
            }
        },
        player: {
            required: {
                depends: function(element) {
                    return $("#favoriteSport").val() === '1';
                }
            }
        }
    },
    messages: {
        favoriteSport: "You must select a favorite sport",
        position: "You must select a position because you selected football",
        player: "You must select a player because you selected football"
    }
});

Рабочий пример: http://jsfiddle.net/2EfPZ/20/

3 голосов
/ 14 апреля 2011

Исправил вашу скрипку (и немного упростил):

http://jsfiddle.net/2EfPZ/21/

Из-за удивительности:

ignore: ':hidden'
...