2010-11-29 3 views
1

私はAjaxフォーム送信を使用しようとしています。 BeforeSubmit関数で。私は提出されたフォームのIDを取得したい。Jquery Ajax beforeSubmit

function StatusComments() { 

    $('.status-comment').submit(function() { 
     $(this).ajaxSubmit(options); 
     return false; 
    }); 

    //$('.status-comment').ajaxForm(options); 


    var options = { 
     beforeSubmit: showRequest, 
     success: showResponse, 
     resetForm: true 
    }; 

    function showRequest(formData, jqForm, options) { 
     var formID = $(this).attr("id"); 
     alert(formID); 
     $('.comment'+formID).attr('disabled', true); 

    } 

    function showResponse(responseText, statusText, xhr, form) { 
     var formID = form.attr('id'); 
     $("#commentbox-"+formID).before(responseText); 
    } 

} 

が、私はshowRequestに未定義としてフォームIDを取得:(

答えて

4

The documentation for the plug-inthis、フォームのインスタンスは、あなたのjqForm引数になる(と、すでにjQueryのインスタンスである)ということではないと言うので:。

function showRequest(formData, jqForm, options) { 
    var formID = jqForm.attr("id"); // <== Change on this line 
    alert(formID); 
    $('.comment'+formID).attr('disabled', true); 
} 

これは、jQueryのスタイルのコールバックは、通常、あなたの混乱は、したがって、動作しますが、それはドキュメントが言うことだかではありません

+0

クラウダー:。感謝することができます。あなたは私がコールバックでやっている間違いを指摘しますか? –

+1

@ Harsha:*「コールバックで何をしているのか分かりますか?」*申し訳ありませんが、「これはjQueryスタイルのコールバックが正常に動作する方法ではありません」* **著者**プラグインのほうがやや珍しい方法でやっていました。通常、jQueryでは、コールバックで 'this'が関連するDOM要素を指しているので、あなたのように' this'がフォーム要素であると想定していました。しかし、このプラグインは、それを別の方法で行い、2番目の引数としてフォームへの参照をコールバックに渡します。しかし、彼らはまともなドキュメントを提供するので、...-) –

+0

:Pありがとうたくさん....... –