2012-09-05 15 views
5

jQueryを使用して配送先住所をコピーするための請求先住所の取得に問題があります。カスタムjQuery要素を持たないプレーンジェーンフォームを使用してこれを正常に実行しました。しかし、カスタムUIをチェックボックスに追加すると、コードが破損しているようです。私はいくつかのコード変更を試みましたが、それらのどれも働いていません。請求先住所jQueryと同じ

ユーザーが[請求先住所が自分の配送先住所と同じです]をクリックすると、何も起こりません。ここに私のjQueryのコードは次のとおりです。

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#check-address').click(function(){ 
     if($('#check-address').attr('checked')){ 
      $('#address-field1').val($('#address-field').val()); 
      $('#city-field1').val($('#city-field').val()); 
      $('#zip-field1').val($('#zip-field').val()); 
      var state = $('#state-field option:selected').val(); 
      $('#state-field1 option[value=' + state + ']').attr('selected','selected'); 
     } else { 
      //Clear on uncheck 
      $('#address-field1').val(""); 
      $('#city-field1').val(""); 
      $('#zip-field1').val(""); 
      $('#state-field1 option[value=Nothing]').attr('selected','selected'); 
     }; 

    }); 
}); 
</script> 

すべてのヘルプは大歓迎です!

答えて

4

Demo of options

$('#check-address').attr('checked') 

$('#check-address').is(':checked') 


ことができなければならないとして、この猫を肌には多くの方法がありますが、コメントで指摘しました。 http://jsfiddle.net/sRt6G/1/ this.checkedは最も単純なようです。

+0

なぜでしょうか?とにかく 'attr()'をとにかく使うのはおそらくもっと効率的でしょう。 – Matt

+0

またはthis.checked :) –

+0

に感謝します(おそらく 'prop( 'checked')')あなたの返事のために。私はここに私のコードを更新しました:rushapassport.com/Secure/Final/application-step-3b.phpそれでも私のために働いていません。どんな助け? – three3

4

jquery 1.7を使用しています。 attrの代わりに小道具を使用する必要があります

$('#check-address').prop('checked') 



     $(elem).attr('checked') // returned true (Boolean) prior to 1.6 
     $(elem).attr('checked') // now returns "checked" (string) versions after 1.6 
     $(elem).prop('checked') // now returns true (Boolean) versions after 1.6 
1

これは、チェックボックスのクリックイベントを実行しようとしている可能性があります。あなたは試してみました:

$('#check-address').on('change', function (e) {... 

if ($('#check-address').is(":checked").... 
5

をあなたのチェックボックス(または何でもそれがない)を飾り立てるために使用しているプラ​​グインは、div<input type="checkbox"/>を交換し、が上イベントをシミュレートしていますチェックボックス。

それはclickイベントを伝播しませんが、あなたの代わりに、そのために耳を傾けなければならないので、それは、は、changeを伝播ありません。あなたはprop('checked')attr('checked')のチェックを代用することがありますが、あなたのコードはまだかかわらず動作しますあなたのコードを改善するために

$('#check-address').change(/* function */); 

。この理由は、prop()のjQueryドキュメントに概要が記載されています。 http://api.jquery.com/prop

+0

ちょっとマット、もう少しあなたのコードを浮かべてください?とても感謝しております? – three3

+0

@ three3:あなたが私に渡したリンクに行くと、私はhttp://www.rushapassport.com/Secure/Final/ – Matt

+0

にリダイレクトされます。今修正されました。もう一度やり直してください – three3

0

次のコードてみたいと思うかもしれません:。。これはあまりにも役立つかもしれない

  var val1 = $("input.street").val(); 
      var val2 = $("input.suitNumber").val(); 
      var val3 = $("input.city").val(); 
      if(this.checked) 
      { 
       $("input.streetb").val(val1); 
       $("input.suitNumberb").val(val2); 
       $("input.cityb").val(val3); 
      } 

      else 
      { 
       $("input.streetb").val(""); 
       $("input.suitNumberb").val(""); 
       $("input.cityb").val(""); 
      } 

      }); 
1

( "変更"、機能(){上 $( "input.billingAddressを")

$('input[name=city\\[' + this.value + '\\]]').val($('input[name=city\\[1\\]]').val()); 

Demo

フィールドの値をコピーするためのチェックボックスを使用し、その後、上部のフォームに必要事項を記入。

動的に作成されたフィールドで動作します。フォームがハードコードされている場合は、this.valueをフィールドのインデックスに置き換えます。

+0

問題は、チェック状態の変更をトリガーしていました。実際にデータをコピーするのではありません。 – jabbink

関連する問題