2011-10-18 18 views
0

私はajaxリクエストに問題があり、簡単な<input type="submit"/>があります。jQueryライブが期待どおりに動作しない

他のビュー内でビューをロードするために使用します。モジュール式とは、あるビューから別のビューへの.load(url)を使用するjqueryを意味します。 問題は、私がview_1の中でview_2を読み込み、view_2のjsスクリプトがview_1の中にある場合です。たとえば、live('click')を使用してview_2からxhrリクエストを起動する必要があります。したがって、試してみると3 (multiple) xhr at same timeなぜか分からない。

私が知っている唯一のものは、次のとおりです。view_1でlive('click')を使用して

  1. それは3複数のXHRを起動します。
  2. 012を使用しています(明らかに私は思っています)view_1にclick()を使用しています。
  3. 直接内部click()を使用すると、それが動作します(しかし、私は唯一の「親」ビューでJSを使用することができ、ロードされたビューで JS使用することはできません)view_2

機能は本当に簡単です、本当にありません私はなぜこの問題があるのか​​知っている(私はまた、AJAX beforeSendでサブミットを無効にする)これはview_1のコードであり、ロードされたview_2で実行され、3つのXHRを起動する。それは、フォーム内の送信ボタンだ場合は、デフォルトの動作を妨げる場合を除き

$(document).ready(function(){ 
    $('#save-doc').live('click',function(){ 
    var _title = $('#doc-title').val(); 
    var _doc = $('#doc-doc').val(); 
    update_doc(url_update_doc,{'title':_title,'doc':_doc,'id_doc':_choosed_doc,'id_project':id_project},this); 
    }); 
}); 
function update_doc(_url,_data,_starter){ 
    $.ajax({ 
     type:'POST', 
     data:_data, 
     url:_url, 
     dataType:'json', 
     beforeSend:function(){ 
      $('.ajax-loading').show(); 
      $(_starter).attr('disabled','disabled'); 
     }, 
     error:function(){ 
      $('.ajax-loading').hide(); 
      $(_starter).removeAttr('disabled'); 
     }, 
     success:function(json){ 
      $('.ajax-loading').hide(); 
      $(_starter).removeAttr('disabled'); 
      if(json.error){ 
       $('#error-title').html(json.error_title); 
       $('#error-doc').html(json.error_doc); 
       $.scrollTo('.append-form-edit-doc','fast'); 
      } 
      if(json.confirm){ 
       $.scrollTo('#top','fast'); 
       $.gritter.add({ 
        title:'Document Saved', 
        text:json.confirm 
       }); 
      } 
     } 
    }); 
} 
+0

IDが 'save-doc'の要素が複数ある可能性はありますか? –

+0

あなたは "return false;"を追加しようとしましたか? 「クリック」ハンドラの最後まで – Pointy

+0

@Shadow WizardのIDはIDです:) .. – sbaaaang

答えて

2

は、フォームが提出されます。

2

.live()は、ドキュメントにイベントハンドラをバインドしていることに注意してください。これを念頭に置いて、すべてのクリックでドキュメント全体で#save-docを検索しています。

ドキュメントに「save-doc」IDを持つ要素が複数ある場合は、すべてがトリガーされます。

しかし、私はあなたがこの1つの入力によってすべて実行されている複数のフォームが階層化されている可能性があると考えています。

編集:第3の可能性は、Pointyが言及するものです。あなたのイベントハンドラを介したサブミットの実行と、ブラウザの動作のために発生した別のサブミット。

HTMLとその内容を入力してください。

関連する問題