0

ユーザーが行う特定のアクションに基づいてDOMを上下に移動するHTMLフォームがあるため、アドレスフォームは変数にロードされ、後でDOMに再注入されます。

/* Load the address form into a variable to be re-injected into the dom later */
var address_form = $('#address_temp').html();
$('#address_temp').remove();

さらに下に AJAX 呼び出しを行い、応答に基づいてフォーム フィールドに値を設定します。したがって、フォームには住所1、住所2、および郵便番号が含まれており、次のようなことをしたいと思います:

$.ajax({
   url: "/qualify/",
   dataType: "json",
   data: {
      ajax : 'true',
      lookup : 'true',
      postcode : $('#avail_input').val()                
   },
   success: function(data) {    
      $('#address1').val(data.street);          
      $('#address2').val(data.city);
      $('#postcode').val(data.postcode);
}});

ただし、アドレスは既に DOM にロードされており、コピーが変数に配置されているため、これは機能しません。フォーム フィールドの値を置き換えるにはどうすればよいですか? 再度操作するには、DOM に再ロードする必要がありますか?

4

2 に答える 2

1

フォームを html 文字列として保存する代わりに、dom 自体を jquery オブジェクトとしてコピーします。

/* Load the address form into a variable to be re-injected into the dom later */
var address_form = $('#address_temp').clone(true);
$('#address_temp').remove();

次に、ドキュメントの dom になくても、フォームの dom を操作できます。

success: function(data) {    
      $('#address1', address_form).val(data.street);          
      $('#address2', address_form).val(data.city);
      $('#postcode', address_form).val(data.postcode);
}

私がやっていることは、次の id の内部を検索することですaddress_form

PS

私の意見では、よりクリーンな同等物が変更されるでしょうが、それはほとんど好みの問題です:)

success: function(data) {
    address_form
        .find('#address1').val(data.street).end()
        .find('#address2').val(data.city).end()
        .find('#postcode').val(data.postcode);
}

jQuery のclone()メソッドについて読みたいと思うかもしれません。

于 2012-11-09T11:52:49.447 に答える
0

成功ハンドラーでは、address_form変数を操作する必要があります。これは次のようにできると思います:

  success: function(data) {    
        address_form.find('#address1').val(data.street);          
        address_form.find('#address2').val(data.city);
        address_form.find('#postcode').val(data.postcode);
  }
于 2012-11-09T11:48:27.357 に答える