簡體   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