PAYATHON 2026

jQuery 如何将 shipping address 复制到 billing address

数据阿明

结论

直接读取 shipping state <select> 的值,再用 .val() 赋给 billing state:

$('#bstate').val($('#state').val());

两个 <select> 中,同一个州对应的 <option value="..."> 必须一致。

完整写法

监听复选框的 change 事件,并用 .prop('checked') 获取当前选中状态:

$(function () {
    $('#same').on('change', function () {
        if ($(this).prop('checked')) {
            $('#bfName').val($('#fName').val());
            $('#blName').val($('#lName').val());
            $('#baddress1').val($('#address1').val());
            $('#baddress2').val($('#address2').val());
            $('#bcity').val($('#city').val());
            $('#bstate').val($('#state').val());
            $('#bzip').val($('#zip').val());
        }
    });
});

这段代码假设:

  • shipping state 的 ID 是 state
  • billing state 的 ID 是 bstate

HTML 示例

两个下拉框应使用相同的 value:

<select id="state" name="state">
    <option value="">None</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    <option value="AZ">Arizona</option>
    <option value="AR">Arkansas</option>
    <option value="CA">California</option>
</select>

<select id="bstate" name="bstate">
    <option value="">None</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    <option value="AZ">Arizona</option>
    <option value="AR">Arkansas</option>
    <option value="CA">California</option>
</select>

假设 shipping state 当前选中:

<option value="CA">California</option>

执行以下代码后,billing state 中 value="CA" 的选项也会被选中:

$('#bstate').val($('#state').val());

这里不用写 option:selected。对于 <select>,直接调用 .val() 就能获取当前选中项的值。

需要触发联动逻辑时

如果 billing state 绑定了 change 事件,或者所用的下拉框插件依赖该事件,可以在赋值后手动触发:

$('#bstate')
    .val($('#state').val())
    .trigger('change');

普通的原生 <select> 通常不需要触发这个事件。

注意事项

不要这样判断复选框状态:

$('#same').attr('checked')

checked 会随用户操作变化,应通过以下任一种方式读取当前状态:

$(this).prop('checked')

或者:

this.checked

如果 billing state 中没有与 shipping state 相同的 value,.val() 就无法选中对应选项。因此,两个下拉框应使用同一套州代码,不能只保证显示文字相同。

备注:内容仅供参考。