Mise à jour automatique de la quantité du panier lors du changement de quantité
12
Dans le panier par défaut de Magento, lorsque le client modifie la quantité, il / elle doit appuyer sur le bouton pour mettre à jour la quantité.
Existe-t-il un moyen pour le panier de mettre à jour la quantité automatiquement lorsque l'utilisateur saisit un autre numéro dans le champ de quantité?
Modifiez d'abord le modèle de panier /app/design/frontend/{package}/{theme}/template/checkout/cart.phtmlet ajoutez un identifiant sur l'élément de formulaire pour un accès plus facile. Disons que vous ajoutez 'id = "cart-form"';
Modifiez maintenant les modèles qui rendent les articles du panier:
Agace l'utilisateur?! Pas de problème, nous le faisons quand même: D
Fabian Blechschmidt
5
@FabianBlechschmidt. Pourquoi pas? Nous sommes ennuyés lors de son développement, l'utilisateur est ennuyé lors de son utilisation. Voilà ce que signifie le compromis. Tout le monde y perd. :)
Marius
Tu es génial Marius. comment puis-je faire cela en utilisant Ajax?
Naveenbos
6
En supposant que votre site a jQuery inclus en mode sans conflit, voici une façon de le faire de manière asynchrone (beaucoup moins ennuyeux!).
jQuery(document).ready(function(){
jQuery('#shopping-cart-table').on('change','input[name$="[qty]"]',function(){var form = jQuery(jQuery(this).closest('form'));// we'll extract the action and method attributes out of the form// kick off an ajax request using the form's action and method,// with the form data as payload
jQuery.ajax({
url: form.attr('action'),
method: form.attr('method'),
data: form.serializeArray()});});});
Je dois souligner que cela fait les hypothèses suivantes:
Votre panier d'achat vit dans un élément avec l'ID de shopping-cart-table
Vos champs de saisie pour la quantité ont un attribut de nom qui se termine par [qté]
Il devrait être facile d'ajuster les sélecteurs du code sur les lignes 2 et 5 respectivement en fonction de votre situation.
Salut Jetha J'ai essayé cela, mais il montre le checkout / cart / updatePost / 302 Trouvé 1.71s une idée pourquoi il montre comme ça?
Naveenbos
Les paramètres sont ce chariot [137] [qté] 1 chariot [139] [qté] 2 form_key zA1lLphVHPsEu4ux En utilisant ceci, comment puis-je poster ceci pour mettre à jour l'action de post
Naveenbos
Votre panier affiche-t-il les quantités mises à jour?
Jetha Chan
Ce n'est pas censé retourner quoi que ce soit; plus au point que vous n'êtes pas vraiment censé vous soucier de la valeur de retour lorsque vous le faites de cette façon. Points à vérifier: - votre formulaire fonctionne-t-il lorsqu'il est soumis normalement, c'est-à-dire sans AJAX? - lorsque les valeurs sont modifiées à l'aide d'AJAX, les valeurs dans le panier (c'est-à-dire ouvrir une autre fenêtre de navigateur) changent-elles?
Si votre version de jQuery est ancienne, vous ne réussirez pas. J'ai trouvé un moyen qui est comme suit, suivez les instructions de notre ami Marius pour insérer
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtmlet ajoutez un identifiant sur l'élément de formulaire pour un accès plus facile. Disons que vous ajoutezid="cart-form"
Dans le cas où vous n'avez pas encore chargé jQuery, vous pouvez également trouver l' <input>
élément (ou dans mon cas un <select>élément depuis que j'ai construit un champ déroulant pour sélectionner le montant) avec le nom name="cart[<?php echo $_item->getId() ?>][qty]"et ajouter ceci:
onchange="this.form.submit()"
Le fichier phtml que vous devez éditer se trouve ici:
En supposant que votre site a jQuery inclus en mode sans conflit, voici une façon de le faire de manière asynchrone (beaucoup moins ennuyeux!).
Je dois souligner que cela fait les hypothèses suivantes:
Il devrait être facile d'ajuster les sélecteurs du code sur les lignes 2 et 5 respectivement en fonction de votre situation.
la source
Editez ces deux fichiers
et sur l'élément portant le nom,
cart[<?php echo $_item->getId() ?>][qty]
ajoutez ceci:la source
Si votre version de jQuery est ancienne, vous ne réussirez pas. J'ai trouvé un moyen qui est comme suit, suivez les instructions de notre ami Marius pour insérer
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
et ajoutez un identifiant sur l'élément de formulaire pour un accès plus facile. Disons que vous ajoutezid="cart-form"
Maintenant, ouvrez le fichier
Faites défiler jusqu'à la fin du fichier et vous trouverez le javascript qui incrémente et décrémente la quantité. La fonction ressemblera à ceci:
Changer pour cela:
la source
Dans le cas où vous n'avez pas encore chargé jQuery, vous pouvez également trouver l'
<input>
élément (ou dans mon cas un<select>
élément depuis que j'ai construit un champ déroulant pour sélectionner le montant) avec le nomname="cart[<?php echo $_item->getId() ?>][qty]"
et ajouter ceci:Le fichier phtml que vous devez éditer se trouve ici:
la source