ボタンのクリック時にフォームの自動送信を無効にする


180

複数のボタンを使用するHTMLフォームがあります。問題は、どのボタンをクリックしても、ボタンのタイプが「送信」でなくてもフォームが送信されることです。例:ボタンのような:<button>Click to do something</button>、フォームの送信になります。

e.preventDefault()これらのボタンを1つずつ実行するのは非常に困難です。

jQueryとjQuery UIを使用していますが、ウェブサイトはHTML5です。

この自動動作を無効にする方法はありますか?

回答:


460

のようなボタン<button>Click to do something</button> 送信ボタンです。

それtype="button"を変更するように設定します。type="submit"デフォルトです(HTML勧告で指定されています)。


24
私はこの単純な仕様を知らなかったので、私のコードを修正して無駄に一日の睡眠を失いました!
palerdot 2013

4
palerdotの概念を反映して、グーグルですばやく検索した結果、このメモを見つけて何時間も殺されなかったことをうれしく思います。非常に知っています、ありがとう。
brooklynsweb 2015

2
@NiketJoshi —そのステートメントは、これが回答する質問とは何の関係もないようです。あなたは新しい質問がある場合は、1を聞いていますが、提供してください明確な問題声明最小限の再現性の例を
クエンティン

19

次のように、return false(return falseはすべてのDOM要素のデフォルトの動作をオーバーライドする)を使用して試すことができます。

myform.onsubmit = function ()
{ 
  // do what you want
  return false
}

次に、myform.submit()を使用してフォームを送信します

または代わりに:

mybutton.onclick = function () 
{
   // do what you want
   return false
}

また、type="button"フォームを使用した場合は送信されません。


8

<button>は実際には送信ボタンであり、他の主な機能はありません。タイプをボタンに設定する必要があります。
ただし、以下のようにイベントハンドラーをバインドする場合は、すべてのボタンを対象とし、ボタンごとに手動で行う必要はありません。

$('form button').on("click",function(e){
    e.preventDefault();
});

ですe.preventDefault();
hlcs 2017

0

属性として入力に直接追加する場合は、これを使用します

 onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

これはフォーム送信動作を防ぎます


0

別のもの:

if(this.checkValidity() == false) {

                $(this).addClass('was-validated');
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();

                return false;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.