【发布时间】:2021-10-04 12:35:01
【问题描述】:
在我的 shopify 购物车中,我在购物车中的每个产品之后都有一个项目输入字段。用户可以使用此输入字段增加或减少购物车中的商品数量。在桌面模式下,还有一个项目增加/减少按钮,但在移动设备上不显示。
输入字段的 HTML(液体代码)如下所示:
<input onblur="this.form.submit();" type="number" class="cart__quantity-selector" name="updates[]" id="updates_{{ item.key }}" value="{{ item.quantity }}" max="{{ item.variant.inventory_quantity }}" min="0" aria-label="{{ 'cart.label.quantity' | t }}">
“max”属性将数量限制为最大值。可用库存。由于客户仍然可以通过使用他们的键盘(而不是项目增加/减少按钮)手动超出限制,我在该 cart-template.liquid 文件的底部添加了一个 JQuery 更改功能(我在另一篇文章中找到了该解决方案)。这个 JQuery 更改函数如下所示:
<script>
jQuery('[max]').change(function() {
var max = parseInt(jQuery(this).attr('max'), 10) || 10000;
var value = parseInt(jQuery(this).val(), 10) || 0;
if (value > max) {
alert('We only have ' + max + ' items of this product in stock');
jQuery(this).val(max);
}
});
</script>
这个 JQuery 函数在实现后工作,它显示警报并将用户正在编辑的输入字段更改为最大。存货。现在 JQuery 函数不再触发了,我不知道发生了什么变化。控制台说
Uncaught ReferenceError: jQuery is not defined
"max" 显然不是根据控制台定义的。不过,通过查看输入元素,“max”和“value”在输入字段中被正确定义(例如 value = "1" 和 max = "8")。如果有人有想法,我会很高兴。
【问题讨论】:
-
在您的相关 HTML 中,您是否引用了 jQuery?如果您确定在代码之前引用它。
-
@BeerusDev 非常感谢您的回答!我瞎了!我将 Jquery 从 移到 ,这很重要!因此,当我尝试运行更改功能时,JQuery 尚未执行。知道如何确保在函数启动之前执行 JQuery 吗?我真的不想把 JQuery 重新放在头上,因为这个问题现在似乎是迄今为止出现的唯一问题,并且 中的 JQuery 阻塞了我的脚本并需要加载 tinme。