Javascript 返回false不阻止表单提交
我正在尝试使用Javascript 返回false不阻止表单提交,javascript,jquery,Javascript,Jquery,我正在尝试使用$验证字段。获取请求。我可以看到错误消息(“计划已存在”),但表单正在提交。我想阻止表单提交。这是我的密码: $("#add_plan_subscriptions").submit(function(event) { var flag = true; var subdomain_val = $('[name="plan[subdomain_type_id]"]').val(); var plan_val = $('[name="plan[plan_type_
$验证字段。获取请求。我可以看到错误消息(“计划已存在”),但表单正在提交。我想阻止表单提交。这是我的密码:
$("#add_plan_subscriptions").submit(function(event) {
var flag = true;
var subdomain_val = $('[name="plan[subdomain_type_id]"]').val();
var plan_val = $('[name="plan[plan_type_id]"]').val();
var plan_name = $('[name="plan[plan_name]"]').val();
var subdomain_type_id = subdomain_val;
var plan_name = $('[name="plan[plan_name]"]').val();
$.get("/plans/check_duplicate_plan",{subdomain_type_id: subdomain_type_id, plan_name: plan_name}, function (response) {
if (response){
event.preventDefault() ;
var element = $('[name="plan[plan_name]"]');
var message = "Plan already present";
addError(element,message)
return false;
}
else{
var element = $('[name="plan[plan_name]"]');
removeError(element)
}
})
if(subdomain_val == ""){
var element = $('[name="plan[subdomain_type_id]"]')
var message = "Please select user type"
addError(element,message)
flag = false;
}
if(subdomain_val != ""){
var element = $('[name="plan[subdomain_type_id]"]')
removeError(element)
}
if(plan_val == ""){
var element = $('[name="plan[plan_type_id]"]')
var message = "Please select plan type"
addError(element,message)
flag = false;
}
if(plan_val != ""){
var element = $('[name="plan[plan_type_id]"]')
removeError(element)
}
if (!flag){
event.preventDefault();
return false;
}
return true;
});
只有在有响应或子域时才阻止表单提交。您需要在事件回调的顶部添加event.preventDefault()
$("#add_plan_subscriptions").submit(function(event) {
event.preventDefault();
var flag = true;
现在$。在get
的响应调用表单提交函数之前,get
以async
模式调用。
因此,在sync
模式下使用ajax
,而不是$。获取
$.ajax({
url: '/plans/check_duplicate_plan',
data: { subdomain_type_id: subdomain_type_id, plan_name: plan_name},
dataType: 'json',
async:false,
type: 'GET',
success: function (response) {
if (response){
event.preventDefault() ;
var element = $('[name="plan[plan_name]"]');
var message = "Plan already present";
addError(element,message)
return false;
}
else{
var element = $('[name="plan[plan_name]"]');
removeError(element)
}
}
})
步骤:
1.将输入类型更改为提交按钮类型
2.添加此行,而不是在javascript中返回true
document.forms["signup"].submit();
我也有类似的问题。考虑一下这样的HTML…< /P>
提交表单的原因是,在您发布表单的最后两行代码中,您返回true
使其返回false强>
您发布的最后两行代码如下所示
return true;
});
return false;
});
而是让它像这样
return true;
});
return false;
});
并尝试删除您的返回值true;并将其替换为event.preventDefault() 删除您的事件.preventDefault()
在$.get函数中,并添加事件.preventDefault()
或返回false如果您只是想阻止表单提交,请在提交函数中使用code>
基于jquery文档
event.preventedfautl();则不会触发事件的默认操作
因此,我们称此方法为“提交”函数将停止触发默认操作
希望这有助于您理解:)这是因为$中的返回false
。get
是从您的匿名函数返回的,而不是提交
处理程序。提交后您是否尝试过查看控制台?不推荐,最新版本的jQuery甚至已从$中退出同步模式。ajax()
。