主题的 +/- 数量按钮不会更改所选优惠
如果主题的数量按钮不会更改所选优惠,请先检查折扣使用的是哪种数量控制。输入数量被调整到某个档位,与按钮完全没有向小组件发送更新是两种不同的情况。
我输入了 8,但购物车收到的是 6
在未使用 Bundlex 自带数量选择器的通常设置中,主题输入框会在已配置的档位之间导航。准确输入某个档位的数量可以选择对应卡片,而输入介于两个档位之间的数量时,当前优惠可能仍保持选中。加入购物车时会使用该优惠的数量。选择“购买 6 件”时输入 8,并不能保证添加 8 件商品。
如需让顾客选择灵活的数量,请在折扣的 附加项标签页中启用 数量选择器,如果该选项可用。它可以与订阅一起使用。如果该选项已禁用,后台会显示阻止使用它的设置名称,请参阅 无法与其组合使用的设置。
启用 Bundlex 的选择器后,主题输入框会反映选择器的结果,而不是控制第二个数量。部分店铺针对普通档位使用了单独的、由支持团队启用的原生数量设置,但这不是默认设置。请参阅 主题数量行为。
如果已启用可选优惠选择,但没有选择优惠,主题控件会正常工作,也不会在优惠卡片之间导航。以下检查针对档位导航设置中的已激活优惠。
同步应如何工作
需要注意两个同步方向:
- 优惠同步到数量:当顾客点击优惠,例如“购买 1 件”“购买 2 件”或“购买 3 件”时,小组件会将主题数量输入框设置为该优惠的数量。这取决于 Bundlex 是否找到了正确的数量输入框。
- 数量同步到优惠:当顾客使用主题的 +/- 按钮或直接输入来更改数量时,小组件应检测到新值,并选择数量完全匹配的优惠。
当主题更改输入框的值却没有触发事件,或小组件监听的是另一个数量输入框时,第二个同步方向可能会失效。仅凭输入了非档位数量,不能证明是事件问题,也不能保证优惠已被取消选择。
为什么 +/- 按钮不会更新优惠
小组件会监听数量输入框上的原生 change 和 input 事件。正常输入通常会触发这些事件,但主题自定义的 +/- 按钮可能不会触发。
不过,许多主题会通过 JavaScript 直接设置输入框的值来实现 +/- 按钮,例如 input.value = newValue。以这种方式赋值不会触发 change 或 input 事件。数字会在屏幕上发生变化,但不会分发事件,因此小组件无法得知数量已改变,所选优惠也会保持不变。
这并非某个特定框架独有的问题。任何以编程方式赋值的操作都会跳过这些事件。只有输入等真实用户交互才会触发它们。基于 Shopify
<quantity-input>自定义元素构建的主题,例如 Dawn,会在更新值后分发change事件,因此这些主题开箱即用。
如何确认这就是原因
- 打开浏览器的开发者工具,在 Mac 上按 F12 或 Cmd+Option+I,然后转到 Console 标签页。
- 在产品页面上点击一个 +/- 按钮。
- 尝试输入一个与可用优惠完全匹配的数量。如果数字发生变化,但所选优惠没有变化,请让主题开发者检查该按钮是否在 Bundlex 正在监听的数量输入框上分发了 change 或 input 事件。
容易出现此问题的主题通常使用自定义的 +/- 按钮直接设置数值,而不是使用 Shopify 的 <quantity-input> Web 组件。
解决方法:触发 change 事件
此修复需要在主题中完成,因此主题代码维护人员可以快速进行修改。请主题开发者在 +/- 处理程序设置新的数量值后,立即触发 change 事件:
input.dispatchEvent(new Event('change', { bubbles: true }));
此处的 input 是正在更新的数量输入元素。这样可以通知监听该事件的脚本,包括 Bundlex。修改后,请测试主题的数量按钮和购物车。
重复的数量输入框情况(悬浮购物车栏)
某些主题会添加悬浮或固定的“加入购物车”栏,该栏会复制商品表单,其中包括第二个数量输入框。两个输入框通常共享相同的 name="quantity",有时甚至共享相同的 id。这样一来,Bundlex 的默认选择器 input[name="quantity"] 可能会绑定到错误的输入框,导致优惠和主表单中的数量始终不一致。
如何确认存在重复输入框
- 打开开发者工具,然后转到 Console(控制台)选项卡。
- 运行:
document.querySelectorAll('input[name="quantity"]').length - 如果结果大于 1,说明页面上存在多个数量输入框。
解决方法:自定义数量输入选择器
让 Bundlex 仅定位到主表单中的数量输入框,排除悬浮栏中的输入框。请将商品 URL 提供给支持团队,以获取新的选择器修复方案,支持团队可以在商店的组件设置中进行配置。如果你需要查看应用嵌入中已保存的旧版选择器,其位置如下:
- 在 Shopify 后台中打开 主题编辑器。
- 转到 应用嵌入,然后找到 Bundlex Bundles。
- 启用 显示高级设置,然后将 数量输入选择器设置为仅定位主表单数量输入框的选择器。
具体选择器取决于你的主题。以下是适用于某些主题的两个示例:
.product-form__item--submit input[name="quantity"]
form.shopify-product-form:not(#addtocart-sticky form) input[name="quantity"]
如果这两个选择器都不适用于你的主题,请将商品页面 URL 提供给支持团队,以便确定正确的选择器。如果支持团队之前配置过覆盖设置,该设置可能会优先于主题字段。
何时联系支持团队
如果你已确认 +/- 按钮会更改数值但不会触发事件,或确认存在重复的数量输入框,而上述修复方法仍未解决问题,请将商品页面 URL 提供给支持团队。如果能同时提供浏览器控制台中的任何 [Bundlex] 消息以及商品表单的 HTML,也会很有帮助。
这篇文章对您有帮助吗?
您的反馈有助于我们改进文档。