2012-01-06 8 views
0

私は.submit()メソッドを使用してデータを送信しています。jQuery with Rails - 内部で関数を実行しない

私は1つをクリックしたとき、私は何を持っていることは、それが自動的にこれを使用してDBに更新し、代替案との質問形式である:

function save_response_with_ajax(t){ 
    $('#edit_response_set_' + t).submit(); 
    } 

をapplication.jsとラジオボタンはこれです:

<%= rs_a_form.input :answer_id, 
      :collection => "code that gets the info", 
      :as => :radio, 
      :input_html => { 
    :onclick => 'save_response_with_ajax(' + response_set.id.to_s + ');'} %> 

すべてがうまくいきますが、ラジオボタンを何度もクリックすると、フォームが再びレンダリングされるので、複数のajaxリクエストを避ける方法を探していました私は多くの時間をクリックします)、私は$ .ajax()メソッドを使用する必要があります。 問題は書き込み時です:

function save_response_with_ajax(t){ 
    $("#form").submit(function(){ 
     //it suppose to be $.ajax(url, .....) instead of alert 
     // I'm just testing 
     alert("hi"); 
    }); 
} 

何も起こりません。誰かがあなたがAJAX要求が起動したときの機能をトリガーするglobal ajax event handlersを使用して終了することができ、複数の提出を避けるために、私に

+0

まずリモートフォームを使用する必要があります - それは簡単です独自のJSを書く必要はありません。しかし、私の意見では、この場合、あなたの問題はclickイベントのsubmitイベントを入れ子にしています。 save_response_with_ajaxメソッドでは、2つのことを行う必要があります。最初にボタンを無効にしてから、ajaxでいくつかのことを行います。 – codevoice

+0

はい私はリモートを使用していますが、主な問題は、何度もクリックしたときに行うことができる複数のajax呼び出しです(バグの一種です。たくさんクリックするとフォームが再びレンダリングされるためです) – JavierQQ23

+0

最初のクリック後にボタンを無効にするのはどうですか?送信ボタンのオプションに追加:disable_with => "投稿中..." – codevoice

答えて

0

を助けることができる

希望など、すべての

$(document).ajaxStart(function(){ 
    //add js to disable your inputs so you can not trigger the submit again. 
    }) 
    .ajaxStop(function(){ 
    //add js to re-enable your inputs that you disabled in ajaxStart 
    }) 
    .ajaxError(function(){ 
    //add js here to alert user that a problem occurred. 
    }); 
関連する問題