You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery input[type=text]校验异常:含stopImmediatePropagation()时功能不符

问题排查与解决方向

核心问题拆解

你当前的代码存在两个关键问题:

  • 全局选择器$(".text-input")会选中页面所有同类输入框,无法精准定位当前点击的OE列对应的输入框,导致判断逻辑失效。
  • 无论输入框是否有内容,都调用了e.stopImmediatePropagation(),直接阻断了所有后续事件(包括题型默认的正常跳转逻辑),这就是有内容时仍触发提示的原因。

修正后的代码示例

$(".sq-cardsort-bucket-c5").on("click", function(e) {
  // 获取当前点击容器内的文本输入框,避免全局匹配
  const currentInput = $(this).find(".text-input");
  const hasContent = currentInput.val().trim().length > 0;

  if (!hasContent) {
    // 无内容时,阻止默认的自动跳行行为,允许用户输入或选择其他列
    e.stopImmediatePropagation();
    e.preventDefault();
    setTimeout(dynamicOE, 750);
  }
  // 有内容时,不做任何阻止,让题型默认的后续逻辑正常执行
});

关键优化点说明

  1. 精准定位输入框:用$(this).find(".text-input")替代全局选择器,确保只判断当前点击的OE列对应的输入框内容。
  2. 条件化阻止事件:仅在输入框为空时调用stopImmediatePropagation()和preventDefault(),有内容时完全放行,让题型的默认跳转逻辑正常触发。
  3. 优化内容判断:加入trim()处理空白字符,避免用户输入空格被误判为有内容。

额外排查建议

  • 检查dynamicOE函数是否存在逻辑冲突,比如是否在无内容时强制触发了选择列的提示。
  • 确认题型默认的事件绑定顺序,如果你的事件绑定在默认事件之后,stopImmediatePropagation()可能无法生效,可以尝试用$(document).on("click", ".sq-cardsort-bucket-c5", function(e) { ... })的委托方式绑定,确保事件优先触发。

内容的提问来源于stack exchange,提问作者bp13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:02:08