Salut tout le monde,
J'ai récemment mis en place un système de synchro sur des selects au niveau du panier d'un site e-commerce, pour avoir le bloc de configuration d'un produit en haut de page et en bas de page.
Or j'ai un bug que je n'arrive pas à traiter...
J'ai deux blocs avec deux liste de choix (Bloc du haut avec le champ Couleur 2 et Couleur 3 et bloc du bas avec Couleur 2 et Couleur3 aussi):
http://rct.madeinforu.com/marque/sis...leu-outremer-2
Il y a des règles auxquelles je ne peux pas toucher qui ont été mises en place sur le premier bloc qui fait que lorsque Couleur 2 est modifié, alors Couleur 3 est sélectionnable et les options du select sont préremplies...
J'ai indépendamment créé mon second bloc à l'image du premier et j'ai mis en place ma synchro de la façon suivante (Couleur 2 Haut synchronisée avec Couleur 2 Bas et Couleur 3 Haut synchronisée avec Couleur 3 Bas) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <script type="text/javascript">
var optionsAtt = jQuery('#attribute<?php echo $_attribute->getAttributeId() ?> > option').clone();
jQuery('#myselect<?php echo $_attribute->getAttributeId() ?>').append(optionsAtt);
jQuery('#attribute<?php echo $_attribute->getAttributeId() ?>').change(function() {
var index = jQuery('option:selected', this).index();
jQuery('#myselect<?php echo $_attribute->getAttributeId() ?>').each(function() { // For each other list
jQuery(this).val(jQuery('option:eq(' + index + ')', this).val()); // Find the matching item
});
});
jQuery('#myselect<?php echo $_attribute->getAttributeId() ?>').change(function() {
var index = jQuery('option:selected', this).index();
jQuery('#attribute<?php echo $_attribute->getAttributeId() ?>').each(function() { // For each other list
jQuery(this).val(jQuery('option:eq(' + index + ')', this).val()); // Find the matching item
});
jQuery('#attribute<?php echo $_attribute->getAttributeId() ?>').change();
});
jQuery('#attribute<?php echo $_attributePREV ?>').click(function() {
var optionsAtt = jQuery('#attribute<?php echo $_attribute->getAttributeId() ?> > option').clone();
jQuery('#myselect<?php echo $_attribute->getAttributeId() ?> > option').remove();
jQuery('#myselect<?php echo $_attribute->getAttributeId() ?>').append(optionsAtt);
});
</script> |
=> Le bloc du haut concerne les attributs avec le prefixe "attribute", celui du bas "myselect".
Voilà mon bug : Après chargement de ma page, la première action est de modifier Couleur2 du bloc du bas, il synchronise bien avec le Couleur 2 du haut, mais le Couleur 3 du haut ne s'active pas car il n'y a pas eu de select manuel et de façon interactive sur le Couleur 2 du bloc du haut....
Je n'arrive pas à générer ce changement de valeur pour que le Couleur 3 devienne sélectionnable et que la liste de choix apparraisse....
J'ai pourtant essayé avec ce code :
jQuery('#attribute<?php echo $_attribute->getAttributeId() ?>').change();
...mais ça ne fonctionne pas...
Une idée?
Est-ce que j'ai été clair :-)
Thanks in advance !
Partager