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

点击输入框触发单次弹窗的代码问题修复咨询

问题分析与修复方案

咱们来拆解你这段代码里的问题,然后给出对应的修复方案:

存在的几个问题

  • HTML元素重复定义id:你的<input>标签同时写了id="input_text"和id="target",HTML规范里一个元素只能有唯一的id属性,浏览器只会识别第一个id,直接导致jQuery选择器$("#target")找不到目标元素,事件绑定自然失效。
  • jQuery代码执行时机错误:你把绑定事件的代码写在了<input>元素前面,这时候浏览器还没渲染出这个输入框,$("#target")获取不到DOM节点,绑定的事件根本不会生效。
  • 事件与提示文本不匹配(非功能性但易混淆):你用的是.focus()事件,但弹窗提示的是.select()的handler,虽然不影响功能,但容易让人误解事件类型。

修复后的代码示例

方案一:调整脚本位置到元素之后(简单直接)

<input id="target">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$("#target").focus(function() { 
  alert("Handler for .focus() called."); 
});
</script>

方案二:用DOM ready包裹代码(脚本位置不受限制)

如果不想调整脚本位置,可以用jQuery的$(document).ready()确保代码在DOM完全加载后再执行:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
  $("#target").focus(function() { 
    alert("Handler for .focus() called."); 
  });
});
</script>
<input id="target">

如果确实需要保留input_text作为id,只需要统一选择器和HTML的id即可:

<input id="input_text">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$("#input_text").focus(function() { 
  alert("Handler for .focus() called."); 
});
</script>

补充小提示

  • 你用的jQuery 2.1.1版本对旧浏览器(比如IE8及以下)兼容性不错,如果是面向现代浏览器,也可以考虑使用更新的版本,但这个版本完全能满足你的需求。
  • .focus()事件正好对应“点击输入框获得焦点”的场景,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:33:01