2012-08-13 1 views
0

내 앱에서 사용자는 ajax를 통해 텍스트 필드를 표시하는 버튼을 클릭합니다.레일 : Ajax로 부분 렌더링을 한 후 JS로 해당 부분을 조작

해당 텍스트 필드가 나타난 후에 그 텍스트 필드에 집중하고 싶습니다.

$("#my-textfield").focus()은 내 js.erb 파일에서 작동하지 않지만 콘솔에서 정상적으로 작동합니다. 나도 쓸모가없는 setTimeout와 그것을 시험해 보았다.

document.getElementById('my-textfield').focus();을 할 때 "null에 집중할 수 없습니다."라는 메시지가 나타납니다.

ajax를 통해 부분을로드 한 후 DOM을 "다시로드"해야합니까?

+0

요소가 아직로드되지 않았을 수 있습니다. console.log ($ ("# my-textfield"). length)를 사용해 볼 수 있습니까? – index

+0

내가 그렇게 할 때 나는 0을 얻는다. 하지만 지금은 0.5 초의 '타임 아웃'을 설정하고 있습니다. – bevanb

답변

0

.on()을 사용하여 DOMNodeInserted 이벤트를 수신 할 수 있습니다. 아직 널리 지원되지는 않았지만 사용 해보지는 않았지만 현재하고있는 작업에 효과가있는 것처럼 보입니다.

0

난 정말이 일을하지 않은하지만 당신이 처음로드 확인

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

을 시도 할 수 있습니다.

+0

제안을 주셔서 감사합니다 - 그것을 밖으로 시도했지만 작동하지 않았다. 나는 삽입 된 "새로운"텍스트 필드가 자바 스크립트가 검색하는 존재의 동일한 평면에 있지 않으며 어떻게 든 다시로드해야한다고 생각합니다. – bevanb

관련 문제