Мне, должно быть, не хватает чего-то очевидного, но все, что я пробовал для этого, оставляет меня пустыми руками, поэтому я немного озадачен.плагин проверки правильности jQuery addMethod некорректно работает
Я пытаюсь использовать плагин проверки jQuery с настраиваемыми методами проверки, но, похоже, он попал или пропустил. Кажется, что я могу успешно добавить правила в определенной степени, но некоторые из методов не применяются. Или указанный метод не применяется, и вместо этого применяется неправильный метод.
Так, например, это работает без сучка и задоринки:
$.validator.addMethod("emailValidation",
function(value, element) {
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/.test(value);
},
"Please enter a valid email address."
);
$.validator.addMethod("password",
function(value, element) {
return /[^\s]{6,25}/.test(value);
},
"Please enter a password between 6 and 25 characters long."
);
...
$(function(){
$("#registrationForm").validate({
rules: {
email: {
required: true,
emailValidation: true
},
password: {
required: true,
password: true
},
}
});
});
Оба пароля проверки и проверки электронной почты работу.
Но тогда я точно так же добавляю проверку валидации для имен. Итак, ниже, где метод пароля заканчивается, я добавляю:
$.validator.addMethod("name",
function(value, element) {
return /[^\s]{6,25}/.test(value);
},
"Please enter a valid name."
);
Который превращает VALIDATE вызов в:
$(function(){
$("#registrationForm").validate({
rules: {
email: {
required: true,
emailValidation: true
},
password: {
required: true,
password: true
},
studentFirstName: {
name: true
}
}
});
});
И вдруг, все только проверка имен. Как поля электронной почты, так и пароль теперь проверяются с использованием метода имени, как и поле имени.
Это смущает! Я добавил вызовы console.log ко всем методам, и действительно, это не то, что один из них вызывается за другим - единственный, вызываемый - это имя.
Я проверил и дважды проверил, что выбор элемента хорош. Я проверил, что все в порядке с самими методами. Есть идеи?
Я не уверен, что «имя» является зарезервированным словом, но поскольку плагин использует атрибут «name» для отслеживания входных данных, возможно, вы должны использовать более творческие имена для своего настраиваемого метода. Другими словами, начинает ли он работать, если вы измените имя на другое? – Sparky