web-dev-qa-db-ja.com

デートピッカーによるWoocommerceチェックアウトの合計

チェックアウトページに新しい日付フィールドを追加しました。日付ベースの配送料計算を作成したいのですが。

日付フィールドは ' update_totals_on_change 'クラスを持ちます。これを手動で変更すると、合計が予想どおりに再計算されます。残念ながら、このフィールドでjQueryの日付ピッカーを使用すると、合計が更新されません。

私の意見では、datepickerのコールバックで update_checkout メソッドをトリガーするべきです。 WooCommerceのcheckout.jsスクリプトには input_changed()があります。 これは $( 'body').trigger( 'update_checkout')を起動します。 。しかし、日付ピッカーのコールバックから直接呼び出すことはできません。

jQuery("#delivery_date").datepicker({
    minDate: new Date(),
    firstDay: 1,
    onSelect: function () {
        $( 'body' ).trigger( 'update_checkout' );
    }
});

Datepickerでupdate_totals_on_change機能を使用するにはどうすればよいですか?

編集する

change() 関数をトリガーして試しましたが、コールバック関数が呼び出されると日付ピッカーが動作しなくなります。

jQuery("#delivery_date").datepicker({
    minDate: new Date(),
    firstDay: 1,
    onSelect: function () {
        $(this).change();
    }
});
1
docker

スタンドアロンコールバックでトリガをラップしてみてください。

jQuery(function() {
    jQuery( "#datetimepicker" ).datetimepicker({
        onClose:function(ct,$i){
        my_callback();
        }
    });
    function my_callback() {
        jQuery( 'body' ).trigger( 'update_checkout' );
    }
});