jQuery form Validator: 需要提交两次
jQuery form Validator: need to submit twice
我正在尝试从 Jquery 实现表单验证器。 onSuccess,我做了一个 ajax-调用。
我想知道为什么我需要在验证开始之前按两次提交按钮?
该脚本位于包含的单独文件中。如果我在页面本身上调用 $.validation() ,它会立即运行。
这是 js 代码:
$(document).ready(function () {
$("#frmNews").submit(function (e) {
e.preventDefault();
// -- form validation
$.validate({
language: nederlands,
onError: function () {
// -- show alert
$("#feedback-error").removeClass('hidden');
// -- back to top
$("html, body").animate({scrollTop: 0}, "slow");
},
onSuccess: function () {
// -- show preloader
$('body').toggleClass('loaded');
$.ajax({
type: 'POST',
url: '/ajax',
data: $("#frmNews").serialize(),
success: function (data) {
var result = $.trim(data);
if (result == 'success') {
// -- show alert
$("#feedback-success").removeClass("hidden");
// -- clear all fields
emptyAllInputFields("#frmNews");
// -- back to top
$("html, body").animate({scrollTop: 0}, "slow");
// -- hide preloader
$('body').toggleClass('loaded');
}
else if (result == 'error_saving') {
// -- alert
$("#feedback-error").removeClass("hidden");
// -- back to top
$("html, body").animate({scrollTop: 0}, "slow");
// -- hide preloader
$('body').toggleClass('loaded');
}
}
});
}
});
});
});
正如@epascarello 在评论部分提到的,您应该将验证放在提交处理程序的外部。
您的脚本中实际发生了什么 - $.validate()
仅 在按下提交按钮后启动。然后它会在下次点击时处理验证(最终 AJAX)。
$("#frmNews").submit(function (e) {
e.preventDefault();
});
$.validate({
// ... your validation ...
});
我正在尝试从 Jquery 实现表单验证器。 onSuccess,我做了一个 ajax-调用。
我想知道为什么我需要在验证开始之前按两次提交按钮?
该脚本位于包含的单独文件中。如果我在页面本身上调用 $.validation() ,它会立即运行。
这是 js 代码:
$(document).ready(function () {
$("#frmNews").submit(function (e) {
e.preventDefault();
// -- form validation
$.validate({
language: nederlands,
onError: function () {
// -- show alert
$("#feedback-error").removeClass('hidden');
// -- back to top
$("html, body").animate({scrollTop: 0}, "slow");
},
onSuccess: function () {
// -- show preloader
$('body').toggleClass('loaded');
$.ajax({
type: 'POST',
url: '/ajax',
data: $("#frmNews").serialize(),
success: function (data) {
var result = $.trim(data);
if (result == 'success') {
// -- show alert
$("#feedback-success").removeClass("hidden");
// -- clear all fields
emptyAllInputFields("#frmNews");
// -- back to top
$("html, body").animate({scrollTop: 0}, "slow");
// -- hide preloader
$('body').toggleClass('loaded');
}
else if (result == 'error_saving') {
// -- alert
$("#feedback-error").removeClass("hidden");
// -- back to top
$("html, body").animate({scrollTop: 0}, "slow");
// -- hide preloader
$('body').toggleClass('loaded');
}
}
});
}
});
});
});
正如@epascarello 在评论部分提到的,您应该将验证放在提交处理程序的外部。
您的脚本中实际发生了什么 - $.validate()
仅 在按下提交按钮后启动。然后它会在下次点击时处理验证(最终 AJAX)。
$("#frmNews").submit(function (e) {
e.preventDefault();
});
$.validate({
// ... your validation ...
});