javascript - Magento 自定义选项上的 JS 警报单击

标签 javascript magento prototypejs

我有一个带有 3 个选项的单选按钮自定义选项。例如,在选择选项 2 时,我希望一个简单的 JS alert() 弹出一条关于此选择的消息,而不是所有选项,只有一个。

我发现的问题是,为了使其与所有产品兼容,他们使用 JS 生成 ID 和类名,因此几乎没有什么模式可以遵循以确保我的代码适用于所有产品。

我可以通过查找该元素并使用 getElementByTag() 获取第二个元素来完成此操作,但是我想要一种 Magento 友好的方式来完成它,因为我正朝着我的认证前进在接下来的几个月里,我想确保我的实践与 Magento 保持一致,而不是“绕过”它。

示例代码(由 Magento 即时生成的 ID、类和名称)

<dd class="last">
    <ul id="options-54765-list" class="options-list">
        <li>
            <input type="radio" class="radio  validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[54765]" id="options_54765_2" value="210674" />
            <span class="label"><label for="options_54765_2">Colour Edge </label></span>
            <script type="text/javascript">$('options_54765_2').advaiceContainer = 'options-54765-container';$('options_54765_2').callbackFunction = 'validateOptionsCallback';</script>
        </li>
        <li>
            <input type="radio" class="radio  validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[54765]" id="options_54765_3" value="210673" />
            <span class="label"><label for="options_54765_3">Gallery Wrap </label></span>
            <script type="text/javascript">$('options_54765_3').advaiceContainer = 'options-54765-container';$('options_54765_3').callbackFunction = 'validateOptionsCallback';</script>
        </li>
        <li>
            <input type="radio" class="radio  validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[54765]" id="options_54765_4" value="210672" />
            <span class="label"><label for="options_54765_4">White Edge </label></span>
            <script type="text/javascript">$('options_54765_4').advaiceContainer = 'options-54765-container';$('options_54765_4').callbackFunction = 'validateOptionsCallback';</script>
        </li>
    </ul>
</dd>

最佳答案

为此,在该产品的设计选项卡中,添加自定义 block ,如下所示:

<reference name="before_body_end">
    <block type="your_module/product" name="option.select.js" template="path/to/template.phtml" />
</reference>

在您的新 block 中,获取 Mage::registry('current_product');,然后调用 getProductOptions()。根据任何标准过滤它。现在,最好的方法可能是,根据是否需要大量重复使用,向数据库中的 Catalog_Model_Product_Option_Value 表添加一列,并扩展管理模板,以便选中一个框,或者使用下拉菜单,或输入一些文本以弹出确认信息。

然后,在 protected function _toHtml() {} 函数中,为确认框输出您的 JS。

我就是这样做的。

关于javascript - Magento 自定义选项上的 JS 警报单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398536/

相关文章:

javascript - "this"IE 中的关键字

javascript - DOMException : Failed to execute styleSheet. 插入规则

magento - 如何在 Magento Controller 中获取 url 参数?

javascript - 如何让prototype.js 模板编码HTML 实体?

magento - 将自定义属性变量添加到订单确认电子邮件模板

php - Magento 产品保存错误 事务尚未提交

javascript - 在 JS 中获取元素标签名称的最佳方法是什么?

javascript - AngularJS : eventRender function is executing so many times in full calendar

javascript - 如何在javaScript中从模板构建html?

javascript - Webpack-dev-server 编译文件但不刷新或使已编译的 javascript 可供浏览器使用