この短いチュートリアルに従って、PO Box フィルタリングを追加しました。
基本的に、これはコントローラーを呼び出し、'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 呼び出しを実行する) を呼び出した後、実際の住所を選択した後に select 要素が自動的に [新しい住所] オプションを表示することです。正しい住所が使用されているため、これは純粋に視覚的な不具合ですが、「新しい住所」と表示されると、ユーザーが混乱する可能性があります。
opcheckout.js (Shipping クラスと setAddress() ビットが存在する場所) を変更せずにこれを解決する方法はありますか?
-- 編集 -- これは Magento Professional です - 1.11.1.0