onsubmit ="return false"对Internet Explorer 7/8没有影响(表单仍然提交)

Dir*_*ler 8 javascript forms onsubmit internet-explorer-8 internet-explorer-7

我有一个表单,将由标签的"onsubmit"中触发的javascript代码提交.适用于所有浏览器 - 但不适用于IE7/IE8.

我能做什么?

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
  [...]
  <input type="submit" value="Go">
</form>
Run Code Online (Sandbox Code Playgroud)

Dre*_*rew 11

我要挑剔这个.如果您想处理表单提交,那就是提交的目的.如果用户点击您的某个字段,则完全避免使用您的onclick处理程序.以下是以非突兀的方式执行此操作的基本示例.

<form name="myform">
  <input type="submit" />
</form>
<script>
  document.myform.onsubmit = function(){
    alert('handled');
    return false;
  }
</script>
Run Code Online (Sandbox Code Playgroud)

这可以通过jQuery更简单,相同的形式......

$("form[name=myform]").bind('submit',function(){
   alert('handled');
   return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 这也不是非突兀的,如果你有一个机制,你可以自动将事件绑定到一个函数而不知道任何具体的实现细节,那么你就是.即`document.myform`或`form [name = myform]`*就像*在HTML中有一个onsubmit属性一样突兀,除了相反的方向.你需要的是一种发现形式,发现它的验证函数的方法(可能通过命名约定`validateMyForm()`),因此自动和一般地绑定.如果你真的想要不突兀.它也可以重复使用. (2认同)

Thi*_*zig 6

这里提出的几个想法是有效的(因为它们使用不同的方法来编写正确的代码),但是有一个更简单的答案

OP写道:

onsubmit="submitmyform();"
Run Code Online (Sandbox Code Playgroud)

代替 :

onsubmit="return submitmyform();"
Run Code Online (Sandbox Code Playgroud)

而已.


Dir*_*ler 0

我们的解决方案是将 javascript 事件从表单的“onsubmit”移动到提交按钮的“onclick”。

<form action="/dosomething.htm" method="GET">
  [...]
  <input type="submit" value="Go" onclick="submitmyform();return false">
</form>
Run Code Online (Sandbox Code Playgroud)

  • 这只会阻止通过单击或按提交按钮上的 Enter 键进行表单提交。在表单内的输入控件中按 Enter 键可以解决此问题。 (4认同)