代码之家  ›  专栏  ›  技术社区  ›  Reece

Woomerce更新购物车按钮已禁用

  •  0
  • Reece  · 技术社区  · 8 年前

    由于某些原因,已将“禁用”添加到购物篮页面上的“更新购物车”按钮。我可以使用jquery获取按钮,但是我不能删除disabled,即使我可以对它应用css,如果我愿意的话。

    为什么禁用被添加到按钮? 如何删除它?

    我的js在页脚里面;

    <script>
        jQuery(document).ready(function(){
            jQuery('#basket_page').find('button[name="update_cart"]').prop('disabled', false);
        });
    </script>
    

    检查器中的按钮html;

    <button type="submit" class="button" name="update_cart" value="Update basket" disabled="">Update basket</button>
    
    4 回复  |  直到 8 年前
        1
  •  0
  •   Derek Nolan    8 年前

    尝试使用jquery删除属性:

    jQuery('#basket_page').find('button[name="update_cart"]').removeAttr( 'disabled' )
    
        2
  •  0
  •   Reece    8 年前

    我知道出了什么问题。在woomerce js文件中有一个名为cart.js的文件。在这个文件中,有一些代码检查输入是否已更改,是否删除了“更新购物车”按钮上的禁用项,以便您可以更新购物车。所以有一些事情可以做,这将与代码冲突。可能的原因是;

    1. 您已经为产品数量输入编辑了模板文件,现在js无法再检测是否有更改,因为您已经更改了结构/类等。

    2. 您已经创建了自己的js函数来处理数量输入,现在它们与cart.js相冲突。

    对我来说这是第二个原因。我发现如果我抓取js中的输入,并在每次更改数量时对其应用.change()就解决了这个问题。但是我更愿意不与cart.js冲突,因为它会在稍后引起问题,所以我只是使用其他方法来捕捉输入发生更改的时间。

    而不是在输入上使用.change来捕获更改后的输入。on('keydown keyup')

        3
  •  0
  •   dev-jim    7 年前

    我也碰到了一些问题。当我查看cart.js时,我发现:

    $( document ).on(
                    'change input',
                    '.woocommerce-cart-form .cart_item :input',
                    this.input_changed );
    
                $( '.woocommerce-cart-form :input[name="update_cart"]' ).prop( 'disabled', true );
            },
    
            /**
             * After an input is changed, enable the update cart button.
             */
            input_changed: function() {
                $( '.woocommerce-cart-form :input[name="update_cart"]' ).prop( 'disabled', false );
            },
    

    显然,要启用更新按钮,您需要更改数量输入值。你看看事件触发器,它与 .woocommerce-cart-form .cart_item :input 这意味着它必须在每一行或每一行中包含这两个元素。

    在我看来 .cart_item 在dom中丢失了,我认为这是没有添加 cart_item 类进入表tr字段。

    所以解决办法是:

    add_filter( 'woocommerce_cart_item_class' , 'fixbug_cart_item_class' ,10 , 3 );
    function fixbug_cart_item_class( $order_item, $item, $order) {
                $class = ' cart_item';
    
    
                 return $class;
    
    }
    
        4
  •  0
  •   Gabriel G.    7 年前

    我浏览了同一个问题,我的问题是修改了 cart.php 我删除了负责将类添加到 cart-item S.

    所以,如果这是你的情况,在你的主题中查找购物车模板( yourtheme/woocommerce/cart/cart.php )在里面 foreach公司 产品的循环应该包含包含购物车项目类的筛选器。

    <tr class="woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
    

    你可以找到 this line originally in the template on Github (根据Woomerce的V3.6.2)