2012-09-05 72 views
5

我無法使用jQuery將帳單地址複製到發送地址。我已經成功地完成了這個使用純jane形式沒有自定義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

爲什麼它應該是?它仍然可以工作(儘管'prop('checked')'會更加正確*。使用'attr()'over'is()'可能更高效。 – Matt

+0

或this.checked :) –

+0

謝謝你的回覆。我在這裏更新了我的代碼: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,所以你應該聽的是代替;

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

要提高你的代碼可能要使用prop('checked')來替代attr('checked')支票,但你的代碼仍然會不顧工作。原因是在jQuery文檔中列出了prop(); 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

相關問題