Ваш код:
$("#confirm").validate({
if(! $form.valid()) return false;
submitHandler: function(form) {
var data = $('#address :input').serializeArray();
$.post($('#address').attr('action'), data, function(info) {
$('#result').html(info);
});
}
});
$('#address').submit(function(){
return false;
});
Вы не можете просто поставить условный оператор сам по себе в методе .validate()
, не сломав плагин.
$("#confirm").validate({
if(! $form.valid()) return false; // REMOVE THIS LINE
...
Метод .validate()
only принимает key:value
пары, представляющие правила и опции, и он присоединяется только к селектору, представляющему контейнер form
, а НЕ к кнопке.
По умолчанию плагин jQuery Validate следует за действием формы по умолчанию, которое будет включать перенаправление.Если вы хотите использовать ajax, вы должны поместить это в плагина submitHandler
.
"Заменяет отправку по умолчанию. Правильное место для отправки формы через Ajax после ее проверки."
Абсолютно нет необходимости для написания отдельной функции обработчика submit
.
$("#confirm").validate({
submitHandler: function(form) {
var data = $('#address :input').serializeArray();
$.post($('#address').attr('action'), data, function(info) {
$('#result').html(info);
});
return false;
}
});
Селектор, который вы подключаете к .validate()
, должен соответствоватьform
, НЕ кнопка.Поскольку тег form
содержит id="address"
...
$("#address").validate({ ....
И, наконец, ваш button
также должен быть type="submit"
...
<button id="confirm" type="submit" ....
DEMO: https://jsfiddle.net/ucekjzx4/1/