我正在研究一个ASP.net Web应用程序。如何在提交按钮onclick事件中取消表单提交?
我有一个表单提交按钮。提交按钮的代码看起来像<input type='submit' value='submit request' onclick='btnClick();'>
。
我想写的东西像下面这样:
function btnClick() {
if (!validData())
cancelFormSubmission();
}
我该怎么办呢?
我正在研究一个ASP.net Web应用程序。如何在提交按钮onclick事件中取消表单提交?
我有一个表单提交按钮。提交按钮的代码看起来像<input type='submit' value='submit request' onclick='btnClick();'>
。
我想写的东西像下面这样:
function btnClick() {
if (!validData())
cancelFormSubmission();
}
我该怎么办呢?
你最好做...
<form onsubmit="return isValidForm()" />
如果isValidForm()
回报false
,那么你的形式不提交。
你也应该从内联移动你的事件处理程序。
document.getElementById('my-form').onsubmit = function() {
return isValidForm();
};
使用onclick='return btnClick();'
和
function btnClick() {
return validData();
}
点击回车将绕过检查。使用onSubmit – Cfreak 2010-11-19 16:29:55
function btnClick() {
return validData();
}
有必要做比这更多的工作。我试图让functino返回true或false,它似乎没有任何区别。 – 2010-11-19 16:29:30
他的回答是正确的。 Upvoted。您还必须在输入标签中返回它 – Cfreak 2010-11-19 16:32:15
另外,我宁愿使用'ev.preventDefault()'或'ev.returnValue = false'来取消默认行为,但不防止事件冒泡,以防其他控件观察到同一元素上的相同事件。只有当你想停止冒泡**和**取消默认动作时才使用'return false'。 请参阅[本文](http://javascript.about.com/library/bldom21.htm)。 – 2010-11-19 16:34:37
您需要更改
onclick='btnClick();'
到
onclick='return btnClick();'
和
cancelFormSubmission();
到
return false;
这就是说,我会尽量避免内部事件赞成unobtrusive JS与库(如YUI或jQuery的)的属性,有一个好的活动处理API并将其与真正重要的事件联系起来(即,表单的提交事件,而不是按钮的点击事件)。
使用onclick将允许用户击中输入并绕过检查。 – Cfreak 2010-11-19 16:30:21
您输入改成这样:
<input type='submit' value='submit request' onclick='return btnClick();'>
而且在你的函数返回false
function btnClick() {
if (!validData())
return false;
}
为什么不改变提交按钮到正规的按钮,并在单击事件,提交表单如果它通过你的验证测试?
e.g
<input type='button' value='submit request' onclick='btnClick();'>
function btnClick() {
if (validData())
document.myform.submit();
}
点击回车将绕过支票。使用onSubmit – Cfreak 2010-11-19 16:29:39
然后,如果JavaScript不可用,它将无法工作。 Build on things that work。 – Quentin 2010-11-19 16:29:42
你需要onSubmit
。不是onClick
否则有人可以按输入,它会绕过你的验证。至于取消。你需要返回false。下面的代码:
<form onSubmit="return btnClick()">
<input type='submit' value='submit request'>
function btnClick() {
if (!validData()) return false;
}
编辑的onsubmit所属的表单标签。
这不起作用。如果数据有效,则不会返回true。把回归正确;在btnClick()函数的末尾 – NickSoft 2013-11-08 07:21:28
您需要return false;
:
<input type='submit' value='submit request' onclick='return btnClick();' />
function btnClick() {
return validData();
}
你应该类型更改从submit
到button
:
<input type='button' value='submit request'>
,而不是
<input type='submit' value='submit request'>
那么你可以在javascript和准你想要的任何行动,它
var btn = document.forms["frm_name"].elements["btn_name"];
btn.onclick = function(){...};
为我工作 希望它可以帮助你的按钮的名称。
很简单,只是返回false;
下面的代码使用jQuery ..
if(conditionsNotmet)
{
return false;
}
有时onsubmit
不会与asp.net工作顺利提交按钮的onclick内。
我用非常简单的方法解决了这个问题。
如果我们有这样一个形式
<form method="post" name="setting-form" >
<input type="text" id="UserName" name="UserName" value=""
placeholder="user name" >
<input type="password" id="Password" name="password" value="" placeholder="password" >
<div id="remember" class="checkbox">
<label>remember me</label>
<asp:CheckBox ID="RememberMe" runat="server" />
</div>
<input type="submit" value="login" id="login-btn"/>
</form>
现在,您可以捕捉得到的形式回发之前该事件,并从回传阻止它,做所有你想用这个jQuery的阿贾克斯。
$(document).ready(function() {
$("#login-btn").click(function (event) {
event.preventDefault();
alert("do what ever you want");
});
});
哎哟,这让我头疼。我有几个不同的'submit'输入。我想我会尝试在这个页面上使用服务器端控件。 – 2010-11-19 16:39:46
可能重复的[如何防止表单被提交?](http://stackoverflow.com/questions/3350247/how-to-prevent-form-from-being-submitted) – 2014-09-29 19:26:54