2009-12-29 29 views
1

我有一個視圖上的地址塊,可以交換一些數據,如果用戶點擊複選框。 javascript函數我看起來像這樣:在jQuery中,如何確保在設置元素值時觸發onchange事件?

<script type="text/javascript"> 
    $().ready(function() { 
     $("#UseAccountAddress").change(function() { 
      if ($(this).attr("checked")) { 
       $("#Street1").val($("#PrimaryAddressLine1").val()); 
       $("#City").val($("#PrimaryCity").val()); 
       $("#Country").val($("#PrimaryCountryId").val()); 
       $("#State").val($("#PrimaryStateId").val()); 
       $("#PostalCode").val($("#PrimaryZip").val()); 
      } 
      else { 
       $("#Street1, #City, #Country, #State, #PostalCode").val(''); 
      } 
     }); 
    }); 
</script> 

大多數情況下,它的工作非常好。

然而,「國家」和「州」元素是下拉列表,其中州與國家級聯級聯(即,從國家列表中選擇「美國」將填充具有50多個州和領土的州,同時選擇「加拿大「會給你一個不同的名單)。這個級聯列表自行運行良好(如果我從國家列表中手動選擇「USA」或「Canada」,則正確的值將填入州列表中)。

問題是,當UseAccountAddress複選框被單擊並且國家的值被更改時,狀態列表不會被更新。

看來,線....

$("#Country").val($("#PrimaryCountryId").val()); 

...不會導致onchange事件火災。

是否有一條線我可以在JavaScript中添加以激發國家的onchange事件,以便狀態列表正確填充?

回答

3

您可以通過直接調用change()觸發事件:

$("#Country").val($("#PrimaryCountryId").val()).change() 
+0

給這個一個答案,因爲.change()在結束了一個很好的接觸。使用這個第一個IF塊。 – 2009-12-29 16:58:50

2
$("#Country").trigger("change"); 

我認爲這隻適用於通過jQuery綁定的事件。

相關問題