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

简单表单中JavaScript focus()方法失效问题求助

解决点击自动填充链接后输入框无法获取焦点的问题

问题原因

你的代码里,<a>标签的href="#dig3"会在点击后触发浏览器的锚点跳转行为——浏览器会自动将焦点定位到#dig3这个div元素上,这直接覆盖了你在autoFill函数中给#lbs输入框设置的焦点。而函数外部调用focus()不受影响,是因为没有触发锚点跳转的干扰。

解决方案

方案1:阻止a标签的默认跳转行为

修改<a>标签的onClick属性,将return true改为return false,阻止浏览器执行锚点跳转,让focus()正常生效:

<body>
    <div class="box-3 " id="dig3">
    <a href="#dig3" onClick="autoFill('dig3'); return false;" >Auto Fill</a><br><br>
    <div>length: <input type="number" size="40" id="length" name="length" required /></div>
    <div>width: <input type="number" id="width" name="width" required /></div>
    <div>height: <input type="number" id="height" name="height" required /></div>
    <div>lb: <input type="number" id="lbs" name="lbs" required /></div>
    <div>oz: <input type="number" id="oz" name="oz" required /></div>

<script>
function autoFill(digID) {
document.querySelector(`#${digID} #length`).value = "15";
document.querySelector(`#${digID} #width`).value = "12";
document.querySelector(`#${digID} #height`).value = "3";

document.querySelector(`#${digID} #lbs`).focus();
}

//document.querySelector("#dig3 #lbs").focus();
</script>
</body>

方案2:修改a标签的href属性

如果不需要锚点跳转功能,可把href="#dig3"改成href="javascript:void(0)",同样能避免默认的焦点抢夺:

<a href="javascript:void(0)" onClick="autoFill('dig3');" >Auto Fill</a>

(若直接移除href属性,a标签会失去默认链接样式,需额外用CSS调整)

内容的提问来源于stack exchange,提问作者Maude Rozencrance's Cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:03:29