这个应该很简单,但是我无法让它工作,所以会很感激任何指针。
我的网页中有一个功能,可以在输入的表格中添加一个新行。这是一个非常基本的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">
请注意,作为reNumberTableIDName函数的一部分,名称和ID 不已更改。
我尝试在帖子中添加一行,然后将焦点/克拉放入新输入中,但它不起作用(焦点停留在之前点击的按钮上)添加行。)
$("#autoLook[" + (newRow -1) + "]").focus();
我已经检查过"#autoLook[" + (newRow -1) + "]"
确实提出了正确字符串的警告,所以我不知道为什么这不起作用。我错过了什么明显的谎言?
还值得注意的是,我尝试在添加的输入中添加自动对焦属性,但我在grails中工作,这种类型的自动完成并不允许我这样做。
谢谢!
值得注意的是,解决方案应该是如下所述使用setTimeout,否则它会不断地将焦点放回到对象中!
答案 0 :(得分:2)
选择器#autoLook[9]
匹配ID为autoLook
且属性为9
的元素;这显然是错的。在方括号周围添加反斜杠以逃避它们:
$("#autoLook\\[" + (newRow - 1) + "\\]").focus();
引自jQuery Documentation: Selectors:
使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^``{|}~
)作为名称的文字部分,它 必须使用两个反斜杠进行转义:\\
。例如,一个id="foo.bar"
的元素可以使用选择器$("#foo\\.bar")
。 W3C CSS规范包含有关的完整规则 有效的CSS选择器。同样有用的是Mathias Bynens的博客文章 关于标识符的CSS字符转义序列。