2012-11-05 153 views
1

期間手動調用setAddress()我已經添加了郵政信箱過濾每本簡短的教程:Magento的 - opcheckout.js - 結帳

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

從本質上講,這只是叫我的控制器,確實在一個的preg_match 'street1'和'street2'字段,並在輸入郵政信箱地址時發出警報,否則它只會調用shipping.save()並進入下一步。

問題是,如果用戶保存了郵政信箱地址(這不是默認地址),當您選擇備用地址(使用郵政信箱)時,隱藏表單字段不會更新選定的地址,並且PO Box驗證不會被調用。

在試圖解決這個問題,我燒shipping.setAddress(值)時,選擇元素被改變:

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

可正常工作幾乎完全,它的地址設置爲我所期望的,一切都很美好,然而,這裏發生的一個小故障是,在調用shipping.setAddress(value)(執行ajax調用)之後,select元素會在我選擇實際地址後自動顯示「New Address」選項。這純粹是一個視覺問題,因爲使用了正確的地址,但顯示「新地址」會讓用戶感到困惑。

有沒有一種方法可以在不修改opcheckout.js中的任何內容(其中Shipping類和setAddress()位所在的位置)的情況下進行修正?

- 編輯 - 這是Magento專業 - 1.11.1.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]); 
}); 

我爲此代碼感到自豪。 /諷刺。