onSubmit返回false不起作用
我完全困惑......我发誓这是昨天工作...我今天早上醒来,所有的表格都停下来工作在我的项目中。onSubmit返回false不起作用
所有表单都有一个“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>
我发誓,这个完美的作品,但今天也没有工作:d
为什么如果我按表单被发送的按钮?
我知道这是一个总的新手问题,但我坚持
谢谢!
试着改变你的“按钮”的代码一样,
<a href="#" onClick="return document.getElementById('form1').onsubmit();">button</a>
的onsubmit事件仅在正常表单提交火灾。当调用JavaScript方法submit()
时,它不会触发。
最好的解决方案是在这里使用正常的提交按钮。
如果你想继续使用页面顶部的链接(这是不unobtrusive,progressive,或优雅的),那么你需要显式调用sub()
功能,如果你在决定之前,测试它的返回值也可以不要拨打submit()
。
浏览器如果以编程方式调用submit(),则不要在窗体上调用 onSubmit事件。
似乎'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>
您可以使用jQuery的preventDefault方法。
$(function() {
$('#repForm').bind('submit', function (e) {
var isValid = true;
if (btnname == 'test') {
isValid = ValidateEmailID();
}
else {
isValid = ValidateSomething();
}
if (!isValid) {
e.preventDefault();
}
});
});
我怀疑他想使用不是提交类型的表单按钮。 在这种情况下,你也可以使用:
<input type="button" value="Submit" onclick="if(sub()) document.getElementById('form1').submit()">
另一个技巧我给的是使用name
属性在所有形式,因为它是非常容易使用:的 document.form1.submit()
代替document.getElementById('form1').submit()
。它是跨浏览器,并在所有这些工作。 getElementById很好,但对表单不是必需的。
检查基本语法和结构...然后检查您的页面上的其他表单或输入框没有形式...我有同样的问题(或类似:按输入框中的回车将导致表单发送)...
我复制粘贴上面的样品,并加载页面。他们工作,我的没有,所以我调整格式,甚至改写它。
你为了使它工作而做了哪些改变?看看[如何回答](http://stackoverflow.com/questions/how-to-answer),了解如何回答Stack Overflow的问题。 – Jesse 2013-03-05 03:01:34
我有同样的问题(我用的是IE 8),
下面的代码是不工作:
<form method="post" id="form1" onsubmit="sub">
<form method="post" id="form1" onsubmit="sub()">
<form method="post" id="form1" onsubmit="return sub()">
和下面的代码工作,
<form method="post" id="form1" onsubmit="return(sub())">
我只需按照样品here
并请注意:
submit方法不会调用onsubmit事件处理程序。
使用INPUT TYPE = submit,INPUT TYPE = image或BUTTON TYPE = submit对象提交表单。
在表单标记的所有onsubmit语句中添加“return”...例如, onsubmit =“return validate_function()”这样,你的验证函数返回false或返回true作为结果发布到你的onsubmit中的返回命令中。
Andy ...我发誓你昨天工作:) 我有一个完整的项目,这种结构,形式从未提交... 它必须是其他的东西......:P – StuckOnSubmit 2010-03-30 09:16:41
提交事件不会触发此代码。三个单独的答案都说这个!要么你错了,要么你的测试用例不足以代表你的实际代码。 – Quentin 2010-03-30 10:01:46
你确定你没有实际的提交按钮?那样会起作用。也许你昨天改变了你的提交按钮作为一个增强的锚点?你有源代码管理系统吗?其他开发者是否也在开发可以改变它的项目? – 2010-03-30 10:06:50