我已经根据这个简短的教程添加了PO Box过滤:
基本上,这只是调用我的控制器,在'street1'和street2'字段上执行preg_match,并在输入PO Box地址时发出警报,否则它只调用shipping.save()并转到下一个步骤
问题是如果用户保存了邮政信箱地址(并且这不是默认地址),当您选择备用地址(使用邮政信箱)时,隐藏的表单字段不会使用所选的更新地址,并且不会调用PO Box验证。
为了解决这个问题,我在更改select元素时触发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调用)之后,select元素会在我选择实际地址后自动显示“新地址”选项。这纯粹是一个视觉故障,因为使用了正确的地址,但是显示“新地址”会让用户感到困惑。
有没有办法解决这个问题,而无需修改opcheckout.js中的任何内容(Shipping类和setAddress()位所在的位置)?
- 编辑 - 这是Magento Professional - 1.11.1.0
答案 0 :(得分: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]);
});
我为这段代码感到骄傲。 /讽刺。