1

我在这个简短的教程中添加了邮政信箱过滤:

http://inhoo.net/ecommerce/magento/prevent-po-boxes-in-shipping-address-field-on-checkout/comment-page-1/#comment-35117

本质上,这只是调用我的控制器,在“street1”和“street2”字段上进行 preg_match,并在输入邮政信箱地址时发出警报,否则它只是调用 shipping.save() 并进入下一步。

问题是,如果用户保存了邮政信箱地址(这不是默认地址),当您选择备用地址(使用邮政信箱)时,隐藏的表单字段不会更新为所选地址,并且不会调用邮政信箱验证。

为了解决这个问题,我在选择元素更改时触发 shipping.setAddress(value) :

jQuery("#shipping-address-select").change(function(){
    var value = jQuery("#shipping-address-select option:selected").val();
    shipping.setAddress(value);
});

这几乎完全按预期工作,它将地址设置为我所期望的,一切都很好;但是,这里发生的一个小故障是在调用 shipping.setAddress(value) (执行 ajax 调用)之后,在我选择了实际地址后,选择元素会自动显示“新地址”选项。这纯粹是一个视觉故障,因为使用了正确的地址,但是让它显示“新地址”会让用户感到困惑。

有没有办法在不修改 opcheckout.js 中的任何内容( Shipping 类和 setAddress() 位所在的位置)的情况下解决这个问题?

-- 编辑 -- 这是 Magento 专业版 - 1.11.1.0

4

1 回答 1

3

虽然肯定不是最佳解决方案,但与此同时,我不得不求助于手动更新隐藏的表单字段:

jQuery("#shipping-address-select").on('change',function(){
    var address = jQuery("#shipping-address-select option:selected").html().split(', ');
    jQuery("#shipping\\:street1").val(address[1]);
    jQuery("#shipping\\:street2").val(address[2]);
});

我为这段代码感到骄傲。/讽刺。

于 2012-11-07T23:26:42.823 回答