在jQuery中,如何确保在设置元素值时触发onchange事件?

时间:2009-12-29 16:47:43

标签: jquery events

我在视图上有一个地址块,如果用户点击一个复选框,它可以交换一些数据。我对此的javascript函数如下:

<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”,则正确的值会填充States列表。)

问题是,当单击UseAccountAddress复选框并更改Country的值时,状态列表不会更新。

看来这行......

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

...不会导致onchange事件触发。

我可以在javascript中添加一行来触发国家/地区的onchange事件,以便正确填充状态列表吗?

2 个答案:

答案 0 :(得分:3)

您可以直接致电change()来触发事件:

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

答案 1 :(得分:2)

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

我认为这只适用于通过jQuery绑定的事件。