[英]Autofocusing on a newly added element via javascript
这应该很简单,但我不能让它工作,所以会欣赏任何指针。
我在我的网页中有一个功能,它将一个新行添加到带有输入等的表中。这是一个非常基本的POST,看起来像这样......
$.post(url, {
newRow : newRow
}, function(data) {
$('#' + tableName + ' > tbody > tr').eq(rowLoc).before(data);
}).done(function() {
reNumberTableIDName($tb)
});
reNumberTableIDName函数非常简单,它遍历表中的所有对象并更改其id / name,以便它们与其他表中的行相关。
现在,添加到此表中的一个元素是自动完成输入,看起来像这样......
<input id="autoLook[9]" class="required yui-ac-input" type="text" title="" value="" name="autoLook[9].id" style="width:500px" autocomplete="off" required="required">
请注意,名称和ID 不会作为reNumberTableIDName函数的一部分进行更改。
我尝试在帖子的“完成”部分添加一行,然后将焦点/克拉放入新输入但它不起作用(焦点停留在先前单击以添加行的按钮上)。
$("#autoLook[" + (newRow -1) + "]").focus();
我已经检查过一个警告"#autoLook[" + (newRow -1) + "]"
确实提出了正确的字符串,所以我不知道为什么这不起作用。 我错过了什么明显的谎言?
还值得注意的是,我试图在添加的输入中添加自动聚焦属性,但我正在使用grails,这种类型的自动完成不允许我这样做。
谢谢!
值得注意的是,解决方案应该是使用如下所述的setTimeout,否则它会不断地将焦点放回到对象!
选择器#autoLook[9]
匹配一个id为autoLook
且属性为9
的元素; 这显然是错的。 在方括号周围添加反斜杠以逃避它们:
$("#autoLook\\[" + (newRow - 1) + "\\]").focus();
引用jQuery文档:选择器 :
使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\\]^``{|}~
)作为名称的文字部分,它必须使用两个反斜杠转义:\\\\
。例如,一个id="foo.bar"
的元素,可以使用选择器$("#foo\\\\.bar")
。W3C CSS规范包含完整的有关有效CSS选择器的规则集。还有一个有用的是Mathias Bynens关于标识符的CSS字符转义序列的博客条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.