2012-02-10 7 views
1

ロード済みページ(私はload()を使用しています)に属しているフォームを送信したいと思います。ボタンの送信をクリックすると何も起こりません。ロードされたページからフォームを送信

ロードされたページのHTMLコード:ロードされたページの

<form id="my_form" method="post" > 
     *** some inputs *** 
     <input id="submit_button" type="submit" value="Confirm" /> 
    </form> 

のjQueryコード:

$("#submit_button").on('click', function() {   

    $('#my_form').submit(function(){ 
     var myForm = $(this);  

     $.ajax({ 
      dataType: 'json',    
      type: "POST", 
      url: "../treatment_page.php", 
      data:myForm.serialize(), 
      success: function(data){ 
        if (data.a == true){ 
          parent.$.colorbox.close(); 
        }else{ 
         alert("Problem!"); 
        }   
      } 
     });     
    return false;  

    }); 

}); 

treatment_page.phpはOKですが、それは)フォームが(上usnigしていない私の他の人を扱います。 treatment_page.phpは親フォルダにあります。すべてのjQueryアクションは、このフォームの提出を除いて、ロードされたページスクリプトで正常に動作します。

+0

'.on( 'submit'、...); ' –

+0

' submit'イベントハンドラを 'click'イベントハンドラの外に移動します。次に、 'click'イベントハンドラをすべて削除します(送信ボタンがフォームを提出するので、' submit'イベントにバインドするだけです)。 – Jasper

答えて

5

送信ボタンをクリックすると、フォームにsubmitハンドラが追加されます。送信ボタンクリックハンドラは必要ありません。このコードを親ページに保存し、このスクリプトをloadと一緒にレンダリングするだけで応答は必要ありません。あなたは、あなたがdelegateを使用することができます古いバージョンを使用している場合

$(document).on('submit', '#my_form', function(){ 
     var myForm = $(this);  

     $.ajax({ 
      dataType: 'json',    
      type: "POST", 
      url: "../treatment_page.php", 
      data:myForm.serialize(), 
      success: function(data){ 
        if (data.a == true){ 
          parent.$.colorbox.close(); 
        }else{ 
         alert("Problem!"); 
        }   
      }, 
      error: function(){ 
       //Error handler 
      } 
     });     
    return false;  

}); 

on

はjQueryの1.7で導入されました。これを試して。

$(document).delegate('#my_form', 'submit', function(){ 
     .... 
     .... 
}); 
+0

jQuery 1.7を使用して)他のアクションとうまく動作します。私はあなたのソリューションを成功することなく試してみます。 「成功」を除いて、どうすればajaxの例外を捕捉できますか?私は自分自身を助けるためにエラーを見たいと思います... – Anon

+0

'error'ハンドラを使うことができます。私の答えチェックアウトにエラーハンドラを追加しました。 – ShankarSangoli

+0

自分のコードを使用している場合にはどのようなエラーが表示されますか?それはアヤックスコールをしていますか? – ShankarSangoli

0

クリックハンドラの外側でonSubmitハンドラを移動します。

$('#my_form').submit(function(){ 
    var myForm = $(this);  

    $.ajax({ 
     dataType: 'json',    
     type: "POST", 
     url: "../treatment_page.php", 
     data:myForm.serialize(), 
     success: function(data){ 
       if (data.a == true){ 
         parent.$.colorbox.close(); 
       }else{ 
        alert("Problem!"); 
       }   
     } 
    });     
return false;  

}); 
+0

こんにちは、私はあなたが '.on( 'submit')'や '.delegate( 'submit')'や '.live( 'submit')'を使う必要があると思うので、バージョンに依存するのではなく、それが存在しないと思われるjQueryオブジェクトを使用してフォームが作成されていない限り、そこにない要素に '.bind( 'submit')しようとしました。 –

関連する問題