8

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

我能做些什么?

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

14 回答 14

11

我要挑剔这个。如果你想处理表单提交,那就是提交的目的。如果用户在您的某个字段中点击输入,您的 onclick 处理程序将完全避免。这是一个以不显眼的方式执行此操作的基本示例。

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

使用 jQuery 可以使这变得更简单,相同的形式......

$("form[name=myform]").bind('submit',function(){
   alert('handled');
   return false;
});
于 2010-11-02T13:55:23.627 回答
6

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

OP 写道:

onsubmit="submitmyform();"

代替 :

onsubmit="return submitmyform();"

而已。

于 2015-10-22T14:10:09.363 回答
3

我认为您的 return false 永远不会达到,因为它是在您的函数返回的内容之后发生的。

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">

确保您在“submitmyform()”函数中返回 false,否则,如果不是,那么它可能会返回 true 给您 form obsubmit 事件。

于 2012-07-16T18:06:54.707 回答
2

尝试这个。为我工作。

onSubmit="javascript:return false"

于 2013-11-08T02:50:52.467 回答
2
<script type="text/javascript">
<!--

function submitHandler()
{
  alert(0);
  return false;
}

window.onload=function(){document.getElementById("formid").attachEvent("onsubmit", submitHandler);}
-->
</script>

<form action="/dosomething.htm" method="GET" id="formid">
  [...]
  <input type="submit" value="Go">
</form>

attach 事件方法仅适用于 IE7/8。如果您想要一个可靠的跨浏览器解决方案,您应该使用 addEventListener 作为替代方案。

希望能帮助到你

于 2012-04-05T20:33:36.647 回答
1

要取消旧版 IE 中的事件,您需要设置returnValuefalse. 简单地返回false是不行的。我不知道为什么微软以这种方式实现它。

function validateForm(evt) {
//  if form is not valid
    if(!condition) {
    //  if evt has preventDefault
        if(evt.preventDefault)
            { event.preventDefault(); }
    //  if evt has returnValue
        else if(evt.returnValue)
            { evt.returnValue = false; }
    //  fallback
        else
            { return false; }
    }
}

//  assume form is reference to your form
form.attachEvent('onsubmit',validateForm);
于 2013-10-18T12:03:12.463 回答
0
<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)">
     [...]
     <input type="submit" value="Go">
   </form>

这工作正常...函数必须返回真或假

于 2013-09-22T12:31:34.077 回答
0

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

<form action="/dosomething.htm" method="GET">
  [...]
  <input type="submit" value="Go" onclick="submitmyform();return false">
</form>
于 2010-11-02T13:45:54.883 回答
0

我有同样的错误,当我打开控制台时,它从来没有出现过。所以我想通了,这是控制台,只要它被关闭,Internet Explorer 就不会知道它。只需使用以下代码在窗口中添加一个虚拟控制台(如果还没有的话):

var myconsole = {log : function(param){}}
window.console = window.console || myconsole;

有了这个你可能会遇到麻烦,如果你想拥有微软的 javascript 控制台。然后将这些行注释掉。但是现在,控制台对象在整个站点上不再是未定义的。

于 2013-06-25T19:03:57.430 回答
-1

事实上,因为你写的submitmyform();return false只是submitmyform评估。

在有两个命令的情况下,您必须像这样将它们放在大括号之间

{submitmyform();return false;}

以便对两者进行评估。

于 2012-07-24T09:15:35.017 回答
-2
document.forms.userFormRegisterr.onsubmit =  function(e){
    return false;
};
于 2014-09-05T16:02:35.837 回答
-2

我认为问题在于 return false 你需要从你的'onsubmit'函数中返回它

见例子。

此表单也永远不会在 IE 7/8 中提交。

 <form action="acknowledgement.html" method="get" onsubmit="verify();">
        <input type="submit" name="submit"
         VALUE="Submit"> 
        </form>

<script language="javscript">
function verify(){

return false;
}
</script>

丹尼。

于 2010-11-02T13:48:30.650 回答
-2

它有效 - 检查 W3Scools 示例(取自) http://www.w3schools.com/js/js_form_validation.asp

<html>
<head>
<script type="text/javascript">
function validate_required(field,alerttxt)
{
with (field)
  {
  if (value==null||value=="")
    {
    alert(alerttxt);return false;
    }
  else
    {
    return true;
    }
  }
}

function validate_form(thisform)
{
with (thisform)
  {
  if (validate_required(email,"Email must be filled out!")==false)
  {email.focus();return false;}
  }
}
</script>
</head>

<body>
<form action="submit.htm" onsubmit="return validate_form(this)" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit">
</form>
</body>

</html>
于 2010-11-02T13:49:20.537 回答
-2

如果您希望 IE 符合标准,则必须在声明中告诉它它应该遵守哪个标准。

没有一个,让它做你想做的事将是无尽的挫败感。有了一个,大部分的挫败感都消失了,因为它开始像其他所有浏览器一样工作。

于 2012-04-08T12:20:49.230 回答