Я думаю, что вы могли бы неправильно понимать наименование правил по сравнению с именами полей. Ваш метод (правило) называется city
... однако то, что ваше поле также называется city
, не означает, что это правило автоматически применяется к этому полю. Вам все равно придется объявить это в любых полях.
Я рекомендую вам изменить имя и выбрать один из следующих вариантов ...
1. Встроенный по классу
создать правило:
$.validator.addMethod('your_rule', function(value, element) {...
назначить правило с помощью class
:
<input type='text' name='city' class='form-control your_rule' ....
В функции .addMethod()
нет аргумента param
, потому что ваша функция не принимает параметры. Если вы приняли параметры, то вы не можете назначить правило с помощью class
.
2. Внутри rules
объекта
создать правило:
$.validator.addMethod('your_rule', function(value, element) {....
назначить правило методом .validate()
:
$('#yourForm').validate() {
rules: {
city: { // <- FIELD NAME
your_rule: true // <- RULE NAME
},
....
},....
Если вам нужно передать параметры в пользовательский метод / правило / функцию, вы должны использовать # 2.
$.validator.addMethod('your_rule', function(value, element, param) {....
$('#yourForm').validate() {
rules: {
city: { // <- FIELD NAME
your_rule: param // <- RULE NAME
},
....
},....