Die Attributauswahl anzeigen Auf der Schaltfläche Klicken Sie nur, wenn das vorherige Attribut ausgewählt wurde

magento.stackexchange https://magento.stackexchange.com/questions/2876

Frage

Im Folgenden wird der Code aus dem Block für konfigurierbare Produkte auf der Detailseite jedes konfigurierbaren Produkts bearbeitet. Es ist der Block, der mit den Dropdowns ausgewählten Auswahl wie "Farbe" bevölkert. Ich arbeite an einem einzigartigen Projekt, bei dem jedes einfache Produkt einen bestimmten Anbieter gibt.

<?php
$_product    = $this->getProduct();
$_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes());
?>
<div id="caitlinVendors">
<?php if ($_product->isSaleable() && count($_attributes)):?>
    <dl>
    <?php foreach($_attributes as $_attribute){ ?>
                <div id="<?php echo $_attribute->getLabel() ?>Box" class="attributeBox">
                    <dt><label class="required"><em>*</em><?php echo $_attribute->getLabel() ?></label></dt>
                    <dd<?php if ($_attribute->decoratedIsLast){?> class="last"<?php }?>>
                        <div class="input-box">
                            <select name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select">
                                <option><?php echo $this->__('Choose an Option...') ?></option>
                              </select>
                          </div>
                    </dd>
                </div>

    <?php }?>
    <a href="#" class="vendorsButton">Show Vendors</a>
    <div class="clear"></div>
    </dl>
    </div>
    <?php 

    $product_id = $_product->getId();
    $attrValue = Mage::getModel('catalog/product')->load($product_id)->getAttributeText('color');  ?>
    <script type="text/javascript">//Caitlin
        var $j= jQuery.noConflict();
        $j(".vendorsButton").on("click", function(event){
            event.preventDefault();
            $j('#vendorBox').css('visibility','show');
            //console.log($j('#color option').val());
            var secondToLast="#caitlinVendors .attributeBox select:nth-last-child(2)";
            if (!$j("secondToLast option:selected").length){
                var attributeValue=<?=json_encode($attrValue)?>;
                console.log("The value is " + attributeValue);
            }
            if ($j("#vendorBox").is(":hidden")) {
                $j("#vendorBox").slideDown("fast");
            } else {
                $j("#vendorBox").hide();
            }
        });


        var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);

    </script>
<?php endif;?>

Ich habe den Anbieter ausgewählt, die Optionen ausgewählt haben, bis "Anbieter anzeigen" ausgewählt ist. Ich möchte nicht, dass "Anbieter anzeigen" klickbar werden, bis die letzte Option ausgewählt ist. Deswegen, Ich habe Probleme mit dem derzeitigen Abruf des Wertes der ausgewählten Option. Ich versuche es hier abzurufen:

<?php 

        $product_id = $_product->getId();
        $attrValue = Mage::getModel('catalog/product')->load($product_id)->getAttributeText('color');  ?>

Ich sende es dann an eine JavaScript -Funktion, um an eine Konsole zu drucken. Ich bekomme nur den Wert "falsch". Irgendwelche Ideen?

War es hilfreich?

Lösung

Was ist mit dem Einstellen der .attr("disabled", true) Während für den ersten Dropdown kein Wert ausgewählt wird.

** Setzen Sie dies auf der Seite.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top