我正在研究一個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