2010-12-07 12 views
3

私はこのような何かをしたいが、これは無限回happingのように見えます。jQueryの `ライブ()`と `提出()`問題

$("form").live("submit", function() { 

    if($(this).attr('action') != "ajax"){ 
     $(this).submit(); 
return true; // even i do this!! but form is NOT submited!! 
} 

else { /* doing the ajax stuff! */ } 
}); 

ChromeとFirefoxでしばらくしてからフォームが送信されます(10秒などのように)、IEでクラッシュします。

私はform.submitは私がこれを提出していますし、何度も何度も機能呼び出されることを意味し、どのように私はこれを避けることができると言うとき、私は知っていますか?あなたはこのように、あなたはここにネイティブform.submit()メソッドを呼び出したいの代わりに、無限ループを引き起こしている、バック.live()ハンドラに泡れ、再び.submit()をFRINGことで

答えて

11

$("form").live("submit", function() { 
    if(this.action != "ajax") { 
    this.submit(); 
    } 
    else { /* doing the ajax stuff! */ } 
}); 

また.action is a native DOM property、あなたはそのようにアクセスすることができます...ここではjQueryのオーバーヘッドは必要ありません。

+0

はちょうど魅力のように働きました! Jqueryの 'submit()'とネイティブの違いと、ネイティブの 'submit()'が '.live'によってどのように処理されるのか疑問に思っています。おかげ –

+0

@Omeid - ネイティブメソッドを提出するには、jQueryのイベントハンドラをトリガしません:) –

+0

@Nick - これが初めて起こりますか?またはJQueryの 'submit()'サブミットは、ロード時にフォームにバインドされます。 –