Пользовательская проверка JQuery не работает - PullRequest
1 голос
/ 04 марта 2012

мой HTML-код:

<select class="validateCardNotExpired" id="order_credit_card_expiration_month">
<option value="1">Jan</option>
<option value="2">Feb</option>
..........
</select>

<select class="validateCardNotExpired" id="order_credit_card_expiration_year">
<option value="2012">2012</option>
<option value="2013">2013</option>
......
</select>

Код Javascript:

$(document).ready(function() {

jQuery.validator.addMethod("validateCardNotExpired", function(value, element, params){
        alert("validate exp");
.........
    }, 'Your card has expired.');

$("#order_form").validate({
tried also:
jQuery.validator.setDefaults({

    rules: {
        order_credit_card_expiration_month: {
            validateCardNotExpired: {
                month: '#order_credit_card_expiration_month',
                year: '#order_credit_card_expiration_year'
            }
        },
        order_credit_card_expiration_year: {
            validateCardNotExpired: {
                month: '#order_credit_card_expiration_month',
                year: '#order_credit_card_expiration_year'
            }
        }
    }
});

}

Проблема:

когда я использую (как рекомендуется в каждом примере) обработчик с тремя параметрами:

function(value, element, params)

предупреждение не отображается (кажется, что механизм проверки JQ встречает какое-то исключение, кстати, как его перехватить в этом случае?)

при удалении третьего параметра:

function(value, element)

появляется предупреждение.

И похоже, что "правила" в любом случае игнорируются.

Что может быть не так?

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Все проблемы были из-за того, что плагин проверки идентифицирует элементы управления по имени, а не по идентификатору.

0 голосов
/ 04 марта 2012

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

jQuery.validator.addMethod("validateCardNotExpired", function(value, params, element){
        alert("validate exp");
.........
    }, 'Your card has expired.');

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

...