Я использую плагин 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)
сообщает мне, что имя правила правильное.
Кто-нибудь знает, почему, или есть альтернативное решение, которое я могу использовать, чтобы сократить повторяющийся рабочий код выше?