【问题标题】:Magento: How to prevent page-load when required option validation fails?Magento:当所需的选项验证失败时如何防止页面加载?
【发布时间】:2015-03-02 00:27:19
【问题描述】:

我的 Magento 商店中有可配置的产品,尺寸是必需的选项。当用户未选择尺寸并将产品添加到购物车时,页面会重新加载并显示错误消息“请指定产品选项”。

如果未选择所需选项,我想通过 jQuery 提示用户“这是必填字段”消息,并避免整个页面重新加载。

我该如何实现呢? 谢谢!

附:我启用了 ajax 添加到购物车。

【问题讨论】:

    标签: jquery validation magento


    【解决方案1】:

    希望有帮助

    我有两种方法。

    1. 添加 class="validate-select" 并编辑 js/prototype/validation.js 以自定义警报(默认为“请选择一个选项。”)

    2. 在configurable.phtml(模板/目录/产品/视图/类型/选项)内的选择框上添加一个onChange,如果选项为空则禁用按钮。

    //last is used if there is more than 1 option, when you change the first option, you have to select the second option.
    function changeBox(value,last) {
    			if(last == "") {
    				jQuery('#buttonCart').attr('disabled','disabled');			
    			}
    			if(value == "") {
    				jQuery('#buttonCart').attr('disabled','disabled');
    				
    			} else {
    				if(last == "") {			
    				jQuery('#buttonCart').attr('disabled','disabled');	
    				} else {			
    				jQuery('#buttonCart').removeAttr('disabled');
    				}
    			}			
    		}
    <select id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry" onchange="changeBox(this.value,'<?php if ($_attribute->decoratedIsLast){?>last<?php } else { echo ""; }?>')">
    <option><?php echo $this->__('Select '.$_attribute->getLabel()) ?></option>
    </select>

    并且不要忘记在添加到购物车按钮中提供 id id="buttonCart"

    【讨论】:

    • 这并不能解决问题中提到的问题:“页面重新加载并显示错误消息”。如果单击添加到购物车时未选择任何尺寸,页面仍会重新加载。
    • @thdoan 我们在升级后面临同样的问题,但没有找到解决方案,您能建议我吗,谢谢!!
    【解决方案2】:

    您可以使用 jQuery 进行客户端验证。将类提供给下拉列表和按钮单击事件(即单击“添加到购物车”)。您可以使用该下拉列表的简单验证。

    你可以使用这样的东西

    jQuery(function($) {
        $('#addtocart').on('click',function(e) {
            if ($('.myDropdown').val() == '') {
                e.preventDefault();
                alert("Please select anyone");
            }
        });
    });
    

    这里 #addtocart 是您添加到购物车按钮的 ID(可能因您而异),而 .myDropdown 是您将提供给下拉列表的类。

    希望您对要做什么有所了解。这可能不是确切的代码,但这以某种方式为您提供了进一步进行的概述。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2011-02-06
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多