通过javascript自动对焦新添加的元素
这应该很简单,但我不能让它工作,所以会欣赏任何指针。
我在我的网页中有一个function,它将一个新行添加到带有输入等的表中。这是一个非常基本的POST,看起来像这样……
$.post(url, { newRow : newRow }, function(data) { $('#' + tableName + ' > tbody > tr').eq(rowLoc).before(data); }).done(function() { reNumberTableIDName($tb) });
reNumberTableIDName函数非常简单,它运行表中的所有对象并更改其id / name,以便它们与其他表中的行相关。
现在,添加到此表中的一个元素是自动完成输入,看起来像这样……
请注意,名称和ID 不会作为reNumberTableIDName函数的一部分进行更改。
我尝试在post的“完成”部分添加一行,然后将焦点/克拉放入新输入但它不起作用(焦点停留在先前单击以添加行的按钮上)。
$("#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字符转义序列的博客条目。