为什么我的onsubmit功能早退出,而不是返回false?
-
20-09-2019 - |
题
<form method="post" action="/Order/CheckOut/" onSubmit="return Validate()">
和然后...
function Validate() {
alert($("#email").val());
return false;
}
在搞砸了部分是,当我拿出它工作正常的警报,提交失败,但是当我把警报中,它允许提交经历......你到底?
我也试过这样:
function Validate() {
if(document.getElementByID("email").value == "test"){
alert("It says test.");
}
return false;
}
,得到了相同的行为,它永远不会使它的return语句...
如果我通过JS步骤与萤火虫和休息的警告或如果(根据以上的版本),它停在那里,我点击“步入”,它只是提交表单,为什么不是做它到返回假线?
解决方案
为什么在try块不把它包装?
function Validate() {
try {
alert($("#email").val());
} catch (e) {
alert("Problem: " + e);
}
return false;
}
其他提示
您可以使用event.preventDefault()
代替。
$("form[name='myForm']").submit(function(e){
e.preventDefault();
alert($("#email").val());
});
您应该尝试将您的JavaScript,CSS和HTML所有独立。不整合它们,否则你会使得项目更加难以管理。代替使用HTML中onsubmit
属性的,只是简单地从JavaScript的附加的逻辑形式的$.submit()
方法我上面那样。
这个例子假设你已经给你的表格的名称“myForm的。”我只是用这个例子的,你应该itendify形成你正在处理的提交事件,而不是使用通用$("form")
选择。
如果您已经使用jQuery的你在做这件事错开始。你不应该手动从onSubmit
元素中指定<form>
处理程序。如做@乔恩建议,只是绑定提交事件:
$("form").submit(function() {
alert($("#email").val());
return false;
});
在问题不在于你的函数返回true。问题是,在警报JavaScript的失败和JavaScript解释退出的代码。此时,浏览器与哪个是提交表单的默认操作继续进行。
这是为什么乔纳森·桑普森建议使用e.preventDefault()警报()之前,这样的浏览器不使用它的默认行为继续当警报()失败。
不隶属于 StackOverflow