onSubmit返回false不起作用

Stu*_*mit 13 return onsubmit

我完全糊涂了...我发誓这是昨天工作的......我今天早上醒来,我的所有表格停止在我的项目中工作.

所有表单都有一个"onsubmit"函数返回false,因为它是一个ajax调用,所以表单永远不会发送.

经过大量测试后,我将问题简化为这段代码:

<html>
<head>
<script type="text/javascript">
 function sub()
 {
  alert ("MIC!");
  return false;
 }
</script> 
</head>
<body>

<form method = "post" id = "form1" onsubmit = "return sub()">
 input: <input type="text" name="input1" >
    <a href="#" onClick="document.getElementById('form1').submit();">button</a> 
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我会发誓,这种方法很完美,但今天也不起作用:D

为什么我按下表格发送的按钮?

我知道这是一个全新的问题,但我被困住了

谢谢 !

And*_*lam 12

如果以编程方式调用submit(),浏览器不会在窗体上调用 onSubmit事件.


小智 7

似乎'submit()'函数绕过了Firefox和IE8中的'form'标签'onsubmit'事件.如果您使用提交按钮,则它按预期工作:

<html>
<head>
<script type="text/javascript">
 function sub()
 {
  alert ("MIC!");
  return false;
 }
</script> 
</head>
<body>

<form method = "post" action="http://google.com" id = "form1" onsubmit = "return sub();">
 input: <input type="text" name="input1" >
     <input type="submit">
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)


Que*_*tin 5

onsubmit事件仅触发正常的表单提交.submit()调用JavaScript 方法时不会触发它.

最好的解决方案是在这里使用普通的提交按钮.

如果您想继续使用页面顶部的链接(不是不显眼,渐进或优雅),那么您需要sub()明确调用该函数并测试其返回值,然后再决定是否应该调用submit().


Ole*_*gas 2

尝试像这样改变你的“按钮”代码

<a href="#" onClick="return document.getElementById('form1').onsubmit();">button</a> 
Run Code Online (Sandbox Code Playgroud)