jquery等待更改完成

时间:2018-03-30 20:55:37

标签: jquery

我有这样的屏幕 enter image description here

如果用户检查帐单邮寄地址与送货地址相同,则必须复制帐单邮寄地址中的所有数据。填写送货地址。

在下拉列表中,首先是国家和地区。关于第二次下拉中相关国家负荷的变化。

当用户检查"相同的地址"事情,比我打电话

$('#payment_shipping_country').val($('#payment_country').val()).change()

表示选择billing_country&将它放在shipping_country中,而不是调用将在shipping_state和

中加载状态的更改
$('#payment_shipping_state').val($('#payment_state').val()).change();

选择在billing_state中选择的shipping_state。

问题是,在加载shipping_states之前,此选择送货状态会调用。它加载shipping_states但是当选择相同的shipping_state的代码已经运行时。

我尝试过多种解决方案,比如

$.when($('#payment_shipping_country').val($('#payment_country').val()).change()).then(function() {
   $('#payment_shipping_state').val($('#payment_state').val()).change();
});

但它永远不会等待运输状态加载。

1 个答案:

答案 0 :(得分:0)

要使其工作,您需要访问通过调用$ .ajax创建的承诺。实现此目的的一种方法是从执行ajax请求的change事件的处理程序返回promise,然后触发该处理程序,以便您可以访问其上的promise和chain。

$('#payment_shipping_country').change(function () {
   // stuff...
   return $.ajax({/*... ajax settings ...*/});
})

稍后,

$('#payment_shipping_country').val($('#payment_country').val())
.triggerHandler('change').then(function () {
  /* it's done! */
})