当用户点击链接时,我想动态地将输入字段添加到html表单。新创建的字段应该获得键盘焦点。
How to Set Focus on Input Field using JQuery的答案对我不起作用(StackOverflow上也没有)。新创建的字段不会获得键盘焦点。在Firefox 43.0.1和Chromium 18中测试过。当我输入时,Firefox开始查找文本(如 CTRL + F ),Chromium什么都不做。我尝试了本地文件和网络服务器中的代码,以及各种版本的jQuery。
function addfield() {
n = $('table#t1 tr').length;
$('table#t1').append('<tr><td><input name=field'+n+' ></td><td><input name=value'+n+'></td></tr>');
$('input[name="field"'+n+']').focus();
}
a { background: tan; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<table id=t1>
<thead>
<tr>
<th>field</th>
<th>value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Bill</td>
<td>bill@yahoo.com</td>
</tr>
</tbody>
</table>
<div><a onclick='addfield();return false;'>Add field</a></div>
答案 0 :(得分:4)
您的jQuery选择器中的name属性似乎存在问题,该选择器应该关注新添加的字段。选择器的"
部分放错了位置。
您当前的代码是
$('input[name="field"'+n+']').focus();
应该是:
$('input[name="field'+n+'"]').focus();
您可以查看此JSFiddle以查找an example。