我有一个表单,它将由标记的“onsubmit”中触发的 javascript 代码提交。适用于所有浏览器 - 但不适用于 IE7/IE8。
我能做些什么?
<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
[...]
<input type="submit" value="Go">
</form>
我有一个表单,它将由标记的“onsubmit”中触发的 javascript 代码提交。适用于所有浏览器 - 但不适用于 IE7/IE8。
我能做些什么?
<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
[...]
<input type="submit" value="Go">
</form>
我要挑剔这个。如果你想处理表单提交,那就是提交的目的。如果用户在您的某个字段中点击输入,您的 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;
});
这里提出的几个想法是可行的(因为它们使用不同的方式来编写正确的代码),但是有一个更简单的答案
OP 写道:
onsubmit="submitmyform();"
代替 :
onsubmit="return submitmyform();"
而已。
我认为您的 return false 永远不会达到,因为它是在您的函数返回的内容之后发生的。
<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
确保您在“submitmyform()”函数中返回 false,否则,如果不是,那么它可能会返回 true 给您 form obsubmit 事件。
尝试这个。为我工作。
onSubmit="javascript:return false"
<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 作为替代方案。
希望能帮助到你
要取消旧版 IE 中的事件,您需要设置returnValue
为false
. 简单地返回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);
<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)">
[...]
<input type="submit" value="Go">
</form>
这工作正常...函数必须返回真或假
我们的解决方案是将 javascript 事件从表单的“onsubmit”移动到提交按钮的“onclick”。
<form action="/dosomething.htm" method="GET">
[...]
<input type="submit" value="Go" onclick="submitmyform();return false">
</form>
我有同样的错误,当我打开控制台时,它从来没有出现过。所以我想通了,这是控制台,只要它被关闭,Internet Explorer 就不会知道它。只需使用以下代码在窗口中添加一个虚拟控制台(如果还没有的话):
var myconsole = {log : function(param){}}
window.console = window.console || myconsole;
有了这个你可能会遇到麻烦,如果你想拥有微软的 javascript 控制台。然后将这些行注释掉。但是现在,控制台对象在整个站点上不再是未定义的。
事实上,因为你写的submitmyform();return false
只是submitmyform
评估。
在有两个命令的情况下,您必须像这样将它们放在大括号之间
{submitmyform();return false;}
以便对两者进行评估。
document.forms.userFormRegisterr.onsubmit = function(e){
return false;
};
我认为问题在于 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>
丹尼。
它有效 - 检查 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>
如果您希望 IE 符合标准,则必须在声明中告诉它它应该遵守哪个标准。
没有一个,让它做你想做的事将是无尽的挫败感。有了一个,大部分的挫败感都消失了,因为它开始像其他所有浏览器一样工作。