2012-08-13 90 views
0

在我的應用程序上,用戶單擊一個按鈕,使得通過ajax顯示文本字段。Rails:在使用Ajax渲染部分內容後,使用JS操縱該部分

我想在該文本字段出現後專注於該字段。

$("#my-textfield").focus()在我的js.erb文件中不起作用,但在控制檯中正常工作。我也試過setTimeout無濟於事。

當我做document.getElementById('my-textfield').focus();我得到「不能關注null」。

我是否需要在通過ajax加載部分文件後以某種方式「重新加載」DOM?

+0

該元素可能尚未加載。你可以嘗試console.log($(「#my-textfield」)。length)? – index 2012-08-13 18:43:43

+0

當我這樣做時,我得到0。但現在我正在設置一個半秒的「超時」。 – bevanb 2012-08-13 19:00:57

回答

0

您可以使用.on()收聽事件DOMNodeInserted。目前還沒有得到廣泛的支持,我從來沒有使用它,但它看起來可能適用於你想要做的事情。

0

我還沒有真正做到這一點,但你可以嘗試

$function() { 
    $("#my-textfield").load(function() { 
    $(this).focus(); 
    }); 
}); 

,以確保它第一次加載。

+0

感謝您的建議 - 嘗試了它,但它沒有奏效。我認爲插入的「新」文本字段不在javascript所搜索的同一平面上,需要以某種方式重新加載。 – bevanb 2012-08-13 19:22:30