繁体   English   中英

通过javascript自动对焦新添加的元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM