Ответ 1
Поскольку для этого нет (в настоящее время) встроенного метода, вам нужно добавить свой собственный метод. Это будет работать:
jQuery.validator.addMethod("exactlength", function(value, element, param) {
return this.optional(element) || value.length == param;
}, $.validator.format("Please enter exactly {0} characters."));
Что можно было бы использовать следующим образом:
$("#formtovalidate").validate({
rules: {
somefield: {
exactlength: 10
}
});
Обновление - как это работает
Меня спросили, как это работает. Я не знаю всех подробностей; Я смоделировал этот метод на ранее существующих. Тем не менее, это моя лучшая попытка объяснить это.
- Функция принимает значения
value
,element
иparam
.-
value
- это значение, введенное в проверяемое поле -
element
- это само поле -
param
- это то, что приходит после типа правила и двоеточия. В приведенном выше примере это 10 вexactlength: 10
-
- Следующая строка - это оператор
return
. Это вернет окончательный вердикт метода проверки обратно к коду, который его вызвал. Любой метод проверки, который возвращаетtrue
, говорит: "это поле проходит проверку!" Он вернет значение строки. - За
return
следуют два объявления, разделенные оператором 'или' (||
).- Оператор
||
означает "оценить элемент слева от него. Если это правда, верните true. Если нет, попробуйте один справа. Если это правда, верните true. В противном случае верните false. '- Элемент слева -
this.optional(element)
. Если элемент не требуется в ваших правилах, это вернет true, а также будет проверка. Что означает "Если я не говорю вам, что это поле требуется, мне все равно, проверяет ли он". - Если поле требуется, мы переходим в правую сторону
||
. Это фактический тест проверки. Он сравнивает длину ввода поля с указанной вами длиной. Если они одинаковы, он возвращает true, метод возвращает true, а проверка проходит. В противном случае проверка не выполняется.
- Элемент слева -
- Оператор
Что об этом. Дополнительную помощь можно найти в документации в частности, о пользовательских методах проверки.