2012-03-22 16 views
120

私はいくつかのボタンを使用するHTMLフォームを持っています。問題は、どのボタンをクリックしても、ボタンが「送信」タイプでなくてもフォームが送信されることです。例えばボタンのような:<button>Click to do something</button>、フォーム提出の結果。ボタンクリック時にフォーム自動送信を無効にする

これらのボタンのそれぞれにe.preventDefault()を実行するのは非常に苦労します。

私はjQueryとjQuery UIを使用しています。このウェブサイトはHTML5になっています。

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

答えて

277

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

これを変更するには、type="button"を設定します。 type="submit"がデフォルトです(specified by the HTML recommendationなど)。

+5

を提出しなくなります。この

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

を使用するには、無駄に私のコードを固定日の睡眠を失いました! – palerdot

+4

palerdotの概念に反して、すばらしいGoogleの検索の後にこのメモが見つかりました。非常に知っている、多くのありがとう。 – brooklynsweb

+0

これは知っていると素晴らしいです! –

5

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

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

これは 'e.preventDefault();'です。 – hlcs

+0

ありがとう、ちょっと5年前にそれを逃した;-) –

11

あなたがしたいことは難しくありません。 )(

または代わりに

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

、その後myform.submitを使用してフォームを送信:あなただけ偽リターン(すべてのDOM要素にはfalseオーバーライドのデフォルトの動作を返す)ことなどを使用して試みることができる

しかし、私は入力タイプ= "ボタン" /ボタンタイプ= "ボタン"はあなたのフォームを送信せず、問題なく使用できると思います。私はこの単純な仕様を知らなかったので、

-1

あなたは属性として入力に直接追加したい場合は、このフォームが動作

関連する問題