2017-08-30 4 views
1

私は顧客の住所を保存するフォームを持っています。フォームテキストエレメントのリストを読み、フォームを提出する前に、それらがすべて記入されていることを確認するために、次のコードを作成しました。しかし、フォームが送信され、フォームがAjax経由でリロードされると、jQueryは参照を失い、フォームのテキスト要素を越えて移動しなくなります。jQuery - Ajaxでリフレッシュされたフォームへの参照を失う

$('#cart-addresses :text').each(function(){ 

     if(sAB == true){ 
      if(this.id.includes("_0_") && this.id != "cart_cart_addresses_attributes_0_address_line_two" && this.value == ""){ 
       ready = false; 
      } 
     }else{ 
      if(this.id != "cart_cart_addresses_attributes_0_address_line_two" && this.id != "cart_cart_addresses_attributes_1_address_line_two" && this.value == ""){ 
       ready = false; 
      } 
     } 
    }); 

私がAjax経由で読み込んだその他の要素については、このようなものを使用しています。

$("#cart-addresses input[type=text]").on('keyup',function(e){ myHandler(e); }); 

しかし、私はAjaxの呼び出しが参照が失われないように、フォームに事の同じタイプを行う方法がわかりません。

Ajax呼び出しは、次のjavascriptで応答を受け取ります。

var $context = this; 

あなたはそれを保存した後どこにでも使用することができます。

$("#address-content").html(""); 
$("<%= escape_javascript(render :partial => "addresses", :locals => { cart: @cart, countries: @countries}) %>").appendTo("#address-content"); 

$("#shipping-methods").html(""); 
$("<%= escape_javascript(render :partial => "shipping_methods", :locals => { cart: @cart}) %>").appendTo("#shipping-methods"); 


$("#order-details").html(""); 
$("<%= escape_javascript(render :partial => "order_details", :locals => { cart_items: @cart_items, totals: @totals}) %>").appendTo("#order-details"); 

setStates(0); 
setStates(1); 

isShippingEqaulToBilling(); 
+0

ajaxの「成功」ブロック – Amogh

+1

を表示する*「フォームが送信され、フォームがAjax経由でリロードされる」* - フォーム全体を置き換えるのはなぜですか?あなたは情報を読んで、それを既存の形式に入れることはできませんか? – GolezTrol

+0

@GolezTrol私はRuby on Railsを使用しています。そのマナーでフォームをレンダリングすると、Railsは自動的にエラーのあるフィールドを生成します。 –

答えて

0

リファレンスの問題はthis変数を格納解決することができます。

+0

詳細をご記入ください。 –

+0

より直接的な例を作るために、あなたのAjaxコールの使い方のスニペットが必要です(データを変更することができます、私はコンテキストを失うだけです) –

関連する問題