Javascript jQuery验证停止表单提交
我正在使用jQuery验证表单,但是当表单被验证时,它会重新加载或提交页面,我想停止该操作。我已经使用了event.preventDefault(),但它不起作用 这是我的密码:Javascript jQuery验证停止表单提交,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我正在使用jQuery验证表单,但是当表单被验证时,它会重新加载或提交页面,我想停止该操作。我已经使用了event.preventDefault(),但它不起作用 这是我的密码: $("#step1form").validate(); $("#step1form").on("submit", function(e){ var isValid = $("#step1form").valid(); if(isValid){ e.preventDefault();
$("#step1form").validate();
$("#step1form").on("submit", function(e){
var isValid = $("#step1form").valid();
if(isValid){
e.preventDefault();
// Things i would like to do after validation
$(".first_step_form").fadeOut();
if(counter == 3){
$(".second_step_summary").fadeIn();
$(".third_step_form").fadeIn();
$(".third_inactive").fadeOut();
}else if(counter < 3){
$(".second_step_form").fadeIn();
$(".third_inactive").fadeIn();
}
$(".first_step_summary").fadeIn();
$(".second_inactive").fadeOut();
}
return false;
});
$(“#step1form”).validate();
$(“#step1form”)。关于(“提交”,函数(e){
var isValid=$(“#step1form”).valid();
如果(有效){
e、 预防默认值();
//验证后我想做的事情
$(“.first\u step\u form”).fadeOut();
如果(计数器==3){
$(“.second_step_summary”).fadeIn();
$(“.third_step_form”).fadeIn();
$(“.third_inactive”).fadeOut();
}否则,如果(计数器<3){
$(“.second_step_form”).fadeIn();
$(“.third_inactive”).fadeIn();
}
$(“.first\u step\u summary”).fadeIn();
$(“.second_inactive”).fadeOut();
}
返回false;
});
我所有的JS验证都使用这个基本结构,这符合您的要求
$('#form').on('submit', function() {
// check validation
if (some_value != "valid") {
return false;
}
});
您不需要
e.preventDefault()
和a返回false代码>语句,它们做同样的事情。插件为有效和无效的表单提交尝试提供回调。如果提供submitHandler回调,则表单不会自动提交到服务器
$("#step1form").validate({
submitHandler : function()
{
// the form is valid
$(".first_step_form").fadeOut();
if(counter == 3){
$(".second_step_summary").fadeIn();
// etc
}
}
});
submitHandler
是插件内置的回调函数
submitHandler
(默认值:本机表单提交):
用于在表单有效时处理实际提交的回调。得到
形式作为唯一的参数。替换默认提交。右翼
在表单验证后,放置以通过Ajax提交表单
由于submitHandler
自动捕获提交按钮的点击,并且只在有效表单上激发,因此您不需要另一个提交处理程序,也不需要使用valid()
来测试表单
您的代码可以替换为:
$("#step1form").validate({
submitHandler: function(form) {
// Things I would like to do after validation
$(".first_step_form").fadeOut();
if(counter == 3){
$(".second_step_summary").fadeIn();
$(".third_step_form").fadeIn();
$(".third_inactive").fadeOut();
}else if(counter < 3){
$(".second_step_form").fadeIn();
$(".third_inactive").fadeIn();
}
$(".first_step_summary").fadeIn();
$(".second_inactive").fadeOut();
return false; // block the default submit action
}
});
$(“#step1form”)。验证({
submitHandler:函数(表单){
//验证后我想做的事情
$(“.first\u step\u form”).fadeOut();
如果(计数器==3){
$(“.second_step_summary”).fadeIn();
$(“.third_step_form”).fadeIn();
$(“.third_inactive”).fadeOut();
}否则,如果(计数器<3){
$(“.second_step_form”).fadeIn();
$(“.third_inactive”).fadeIn();
}
$(“.first\u step\u summary”).fadeIn();
$(“.second_inactive”).fadeOut();
return false;//阻止默认提交操作
}
});
您将e.preventDefault()
放在了错误的位置。它位于if
语句中,该语句仅在表单有效时运行。如果表单有效,它将运行,但不管它是否位于错误的位置。返回true代码>在if(isValid)
block中不完全正确return false
在jQuery事件处理程序中=e.preventDefault()
和e.stopPropagation()
在哪里指定要提交的操作url?@coding\u傻瓜,因为他想使用preventDefault()
假设OP正在提交程序中进行Ajax提交。如果没有submitHandler
功能,则
元素上的默认操作将启动。谢谢,它可以工作。但不幸的是,我的输入字段名称中有dot
。请看我的问题-@coding\u白痴,你不应该这样高调评论。有人已经发布了你问题的正确答案。当我在这里发表评论时,它不在那里。很抱歉给您带来不便。