跳转到主要内容
故障排除

主题的 +/- 数量按钮不会更改所选优惠

如果主题的数量按钮不会更改所选优惠,请先检查折扣使用的是哪种数量控制。输入数量被调整到某个档位,与按钮完全没有向小组件发送更新是两种不同的情况。

我输入了 8,但购物车收到的是 6

在未使用 Bundlex 自带数量选择器的通常设置中,主题输入框会在已配置的档位之间导航。准确输入某个档位的数量可以选择对应卡片,而输入介于两个档位之间的数量时,当前优惠可能仍保持选中。加入购物车时会使用该优惠的数量。选择“购买 6 件”时输入 8,并不能保证添加 8 件商品。

如需让顾客选择灵活的数量,请在折扣的 附加项标签页中启用 数量选择器,如果该选项可用。它可以与订阅一起使用。如果该选项已禁用,后台会显示阻止使用它的设置名称,请参阅 无法与其组合使用的设置。

启用 Bundlex 的选择器后,主题输入框会反映选择器的结果,而不是控制第二个数量。部分店铺针对普通档位使用了单独的、由支持团队启用的原生数量设置,但这不是默认设置。请参阅 主题数量行为。

如果已启用可选优惠选择,但没有选择优惠,主题控件会正常工作,也不会在优惠卡片之间导航。以下检查针对档位导航设置中的已激活优惠。

同步应如何工作

需要注意两个同步方向:

  • 优惠同步到数量:当顾客点击优惠,例如“购买 1 件”“购买 2 件”或“购买 3 件”时,小组件会将主题数量输入框设置为该优惠的数量。这取决于 Bundlex 是否找到了正确的数量输入框。
  • 数量同步到优惠:当顾客使用主题的 +/- 按钮或直接输入来更改数量时,小组件应检测到新值,并选择数量完全匹配的优惠。

当主题更改输入框的值却没有触发事件,或小组件监听的是另一个数量输入框时,第二个同步方向可能会失效。仅凭输入了非档位数量,不能证明是事件问题,也不能保证优惠已被取消选择。

为什么 +/- 按钮不会更新优惠

小组件会监听数量输入框上的原生 change 和 input 事件。正常输入通常会触发这些事件,但主题自定义的 +/- 按钮可能不会触发。

不过,许多主题会通过 JavaScript 直接设置输入框的值来实现 +/- 按钮,例如 input.value = newValue。以这种方式赋值不会触发 change 或 input 事件。数字会在屏幕上发生变化,但不会分发事件,因此小组件无法得知数量已改变,所选优惠也会保持不变。

这并非某个特定框架独有的问题。任何以编程方式赋值的操作都会跳过这些事件。只有输入等真实用户交互才会触发它们。基于 Shopify <quantity-input> 自定义元素构建的主题,例如 Dawn,会在更新值后分发 change 事件,因此这些主题开箱即用。

如何确认这就是原因

  1. 打开浏览器的开发者工具,在 Mac 上按 F12 或 Cmd+Option+I,然后转到 Console 标签页。
  2. 在产品页面上点击一个 +/- 按钮。
  3. 尝试输入一个与可用优惠完全匹配的数量。如果数字发生变化,但所选优惠没有变化,请让主题开发者检查该按钮是否在 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"] 可能会绑定到错误的输入框,导致优惠和主表单中的数量始终不一致。

如何确认存在重复输入框

  1. 打开开发者工具,然后转到 Console(控制台)选项卡。
  2. 运行:document.querySelectorAll('input[name="quantity"]').length
  3. 如果结果大于 1,说明页面上存在多个数量输入框。

解决方法:自定义数量输入选择器

让 Bundlex 仅定位到主表单中的数量输入框,排除悬浮栏中的输入框。请将商品 URL 提供给支持团队,以获取新的选择器修复方案,支持团队可以在商店的组件设置中进行配置。如果你需要查看应用嵌入中已保存的旧版选择器,其位置如下:

  1. 在 Shopify 后台中打开 主题编辑器。
  2. 转到 应用嵌入,然后找到 Bundlex Bundles。
  3. 启用 显示高级设置,然后将 数量输入选择器设置为仅定位主表单数量输入框的选择器。

具体选择器取决于你的主题。以下是适用于某些主题的两个示例:

.product-form__item--submit input[name="quantity"]
form.shopify-product-form:not(#addtocart-sticky form) input[name="quantity"]

如果这两个选择器都不适用于你的主题,请将商品页面 URL 提供给支持团队,以便确定正确的选择器。如果支持团队之前配置过覆盖设置,该设置可能会优先于主题字段。

何时联系支持团队

如果你已确认 +/- 按钮会更改数值但不会触发事件,或确认存在重复的数量输入框,而上述修复方法仍未解决问题,请将商品页面 URL 提供给支持团队。如果能同时提供浏览器控制台中的任何 [Bundlex] 消息以及商品表单的 HTML,也会很有帮助。

这篇文章对您有帮助吗?

您的反馈有助于我们改进文档。

谢谢,我们会继续改进这篇文章。

想与我们的团队聊天? 还有疑问?

仍需帮助?

我们的团队只需点击一下即可联系。给我们发送消息,我们会尽快回复。

我们使用少量 Cookie 来确保网站正常运行、衡量网站使用情况,并在您打开聊天组件时为其提供支持。请参阅我们的 Cookie 政策。