web-dev-qa-db-fra.com

Totaux de mise à jour de paiement Woocommerce avec datepicker

J'ai ajouté un nouveau champ de date sur la page de paiement. J'aimerais créer un calcul des frais de livraison en fonction de la date.

Le champ de date a la classe ' update_totals_on_change '. Lorsque vous modifiez ceci manuellement, les totaux sont recalculés comme prévu. Malheureusement, lorsque j'utilise le datepicker jQuery sur ce champ, les totaux ne sont pas mis à jour.

À mon avis, je devrais déclencher la méthode update_checkout dans le rappel du sélecteur de date. Dans le script checkout.js de woocommerce, il y a un input_changed (); qui déclenche le $ ('body') .trigger ('update_checkout'); . Mais je ne peux pas les appeler directement à partir du rappel du datepicker.

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

Comment puis-je utiliser la fonctionnalité update_totals_on_change avec datepicker?

Modifier:

Je l'ai essayé en déclenchant la fonction change () mais le sélecteur de date cesse de fonctionner toutes les fois où une fonction de rappel a été appelée.

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

Essayez d'encapsuler le déclencheur dans un rappel autonome.

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