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

使用jQuery追加输入框后实现自动聚焦的问题及解决方法

解决追加输入框后自动聚焦的问题

我明白你的困扰——追加输入框后没法自动聚焦确实有点烦人,我来帮你搞定它!

问题出在哪?

你之前用的$('.fields').append(field_html).focus()之所以无效,是因为append()方法返回的是容器本身(.fields),而不是你刚添加的输入框。给容器调用focus()自然不会让输入框获得焦点啦。

两种可行的解决方案

方案1:追加后定位到新输入框再聚焦

只需要在追加后,找到刚添加的那个.input元素,再调用focus()就可以了:

$('button').on('click', function(e){
 var field_html = $('.row').html();
 $('.fields').append(field_html);
 // 找到容器里最后一个.input元素并聚焦
 $('.fields .input:last').focus();
});

或者把链式调用写在一起,更简洁:

$('button').on('click', function(e){
 var field_html = $('.row').html();
 $('.fields').append(field_html).find('.input:last').focus();
});

方案2:克隆元素再追加(更稳妥)

比起直接复制HTML字符串,克隆原输入框元素的方式更可靠,能保留元素的所有属性和事件(如果后续需要添加事件监听的话):

$('button').on('click', function(e){
 // 克隆隐藏row里的输入框
 var newInput = $('.row .input').clone();
 // 追加到容器
 $('.fields').append(newInput);
 // 直接给克隆的元素聚焦
 newInput.focus();
});

完整可运行代码

更新后的完整代码如下:

HTML

<div class="fields">
 <!-- 输入框会追加到这里 -->
</div>
<div class="row">
 <input name="input" class="input">
</div>
<button>Add</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

CSS

.input{
 padding: 10px 10px;
 border: 1px solid blue;
 width: 300px;
 margin-bottom: 10px;
}
.row {
 display: none;
}

JavaScript

$('button').on('click', function(e){
 var newInput = $('.row .input').clone();
 $('.fields').append(newInput);
 newInput.focus();
});

关键注意点

一定要确保输入框已经被添加到DOM树中再调用focus(),如果元素还没渲染到页面上,focus()是不会生效的。上面两种方案都是先把元素追加到DOM,再执行聚焦,所以能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:07:49