Добавление правил проверки jQuery на основе атрибутов данных в цикле

Я использую плагин jQuery validation , пытаясь добавить правила на основе атрибутов data- . Я добавляю правила минимальной / максимальной длины на основе минимальной длины данных или максимальной длины данных . Вот пример HTML:

Я делаю это, чтобы добавить правила, и он работает нормально:

$('input[data-minlength]').each(function(){
    if ($(this).data('minlength')) {
        $(this).rules("add", {
            minlength: $(this).data('minlength')
        });
    }
});

$('input[data-maxlength]').each(function(){
    if ($(this).data('maxlength')) {
        $(this).rules("add", {
            maxlength: $(this).data('maxlength')
        });
    }
});

Но я хотел сократить его, поэтому попробовал это, но он не работает:

['minlength', 'maxlength'].forEach(function(item){
    $('input[data-'+item+']').each(function(){
        if ($(this).data(item)) {
            // alert(item) shows the correct rule name
            $(this).rules("add", {
                // Next line fails, but hardcoding a rule name works
                item: $(this).data(item)
            });
        }
    });
});

Ошибка в том, что $. Validator.methods [метод] не определен. Каким-то образом ему передается неправильное имя метода, хотя alert (item) сообщает мне, что имя правила правильное.

Кто-нибудь знает, почему, или есть альтернативное решение, которое я могу использовать, чтобы сократить повторяющийся рабочий код выше?

Демо: http://jsfiddle.net/kaVKe/1/

6
задан Wesley Murch 25 January 2012 в 15:31
поделиться