web-dev-qa-db-ja.com

送信ボタンonclickイベントでフォーム送信をキャンセルするにはどうすればよいですか?

私はASP.net Webアプリケーションに取り組んでいます。

送信ボタンのあるフォームがあります。送信ボタンのコードは、<input type='submit' value='submit request' onclick='btnClick();'>のようになります。

次のようなものを書きたい:

function btnClick() {
    if (!validData())
        cancelFormSubmission();
}

どうすればいいですか?

93

やってみた方がいい...

<form onsubmit="return isValidForm()" />

isValidForm()falseを返す場合、フォームは送信されません。

また、おそらくイベントハンドラーをインラインから移動する必要があります。

document.getElementById('my-form').onsubmit = function() {
    return isValidForm();
};
168
alex

入力をこれに変更します。

<input type='submit' value='submit request' onclick='return btnClick();'>

関数でfalseを返します

function btnClick() {
    if (!validData())
        return false;
}
39
mikefrey

変更する必要があります

onclick='btnClick();'

onclick='return btnClick();'

そして

cancelFormSubmission();

return false;

とは言っても、優れたイベント処理APIを備えたライブラリ(YUIやjQueryなど)では nobtrusive JS を優先して組み込みイベント属性を回避し、本当に重要なイベントに結び付けようとします(つまり、ボタンのクリックイベントではなく、フォームの送信イベント)。

12
Quentin

onsubmitはasp.netで動作しない場合があります。

非常に簡単な方法で解決しました。

そのような形があれば

<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を使用して必要なすべてのAjaxを実行できるようになりました。

$(document).ready(function () {
            $("#login-btn").click(function (event) {
                event.preventDefault();
                alert("do what ever you want");
            });
 });
6
shady sherif

タイプを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(){...};

私のために働いて、それが役立つことを願っています。

5
Mohammed

return false;する必要があります:

<input type='submit' value='submit request' onclick='return btnClick();' />

function btnClick() {
    return validData();
}
4
SLaks

単純で、falseを返すだけです。

以下のコードは、jquery。を使用した送信ボタンのonclick内にあります。

if(conditionsNotmet)
{
return false;
}
1
omar-ali

送信ボタンを通常のボタンに変更し、クリックイベントで検証テストに合格したらフォームを送信してみませんか?

例えば

<input type='button' value='submit request' onclick='btnClick();'>

function btnClick() { 
    if (validData()) 
        document.myform.submit();
} 
1
George Johnston

onclick='return btnClick();'を使用します

そして

function btnClick() {
    return validData();
}
0
Adam
function btnClick() {
    return validData();
}
0
mbeckish

onSubmitが必要です。 onClickではない場合、誰かがEnterを押すだけで、検証がバイパスされます。キャンセルは。 falseを返す必要があります。コードは次のとおりです。

<form onSubmit="return btnClick()">
<input type='submit' value='submit request'>

function btnClick() {
    if (!validData()) return false;
}

編集 onSubmitはformタグに属します。

0
Cfreak
<input type='button' onclick='buttonClick()' />

<script>
function buttonClick(){
    //Validate Here
    document.getElementsByTagName('form')[0].submit();
}
</script>
0
Person