2010-11-24 20 views
6

私は設定しているAJAXフォームを持っています。<input type="button">とjQueryの.clickアクションが設定されています。AJAXでinput type = "button"の代わりにinput type = "submit"?

フォームには<input type="submit"が存在しないため、フォームは伝統的な方法で送信されないため、フォーム検証ツールが常に機能するとは限りません。また、入力ボタンを押しても何も起こりません。

送信入力を追加した場合、クリックした場合(または入力がヒットした場合など)、ページはAJAXフォームでないかのように再読み込みされます。

私はここで何が欠けていますか?

答えて

11

送信ボタンを使用します。送信ボタンは、Enterキーを押すなど、デフォルトのブラウザーの動作に関してより互換性があります。次に、送信イベントでは、フォームの送信をキャンセルし、AJAXコードを実行します。

<form onsubmit="return false;"> 
<!--Blah Blah Blah--> 
<input type="submit"> 
</form> 

あなたはjQueryのを使用している場合、彼はのはjQueryのを使用してイベントを提出形成するために添付した場合、あなたはより多くの「クリーン」な方法

$('#form_id').bind('submit',function(e) { 
    e.preventDefault(); //Will prevent the submit... 
    //Add additional code here 
}); 
+0

を使用することができ、をonSubmit = "falseを返す'のための必要はありません。 "時代遅れの機能性。 'e.preventDefault()'は既にトリックを行います。 –

+2

@Robert Koritnik:私はそれを知っています。私は彼がしていたことを達成するために2つの方法を提供していました。 – Kranu

4

むしろフォームのsubmit動作を変更し、同様にあなたの<input type="submit">ボタンを保つ:

$("form").submit(function(e){ 
    e.preventDefault(); 
    // do ajax submition 
    $.ajax({ 
     url: "SomeURL", 
     type: "POST", 
     data: $(this).serializeArray(), 
     success: function(data, status, xhr) { 
      // do the success stuff 
     }, 
     error: function(xhr, status err) { 
      // do the error stuff 
     } 
    }); 
}); 

利点:良いことは、あなたがは、フォームの入力のいずれかにをEnterキーを押したときに、これはすべてのケースで動作しますです要素を選択するか、送信ボタンをクリックします。常に例外なく動作します。

関連する問題