2014-01-11 113 views
0

我想使用jQuery的焦點()方法,我不明白爲什麼它不工作。這裏有一個小提琴:http://jsfiddle.net/3RGRv/4/

當您按下「準備搖滾」,該按鈕的處理程序被調用,並且在它的內部,$('#playlistNameInput').focus();

控制檯記錄消息確認,這是達到和處理,但仍然沒有焦點發生。任何想法爲什麼這是?

+0

如果該元素沒有顯示(或者至少被認爲是佈局的一部分),它就不能被聚焦。等到動畫完成後淡出,然後調用'focus'。如果這不起作用,我不知道爲什麼。 Backbone和jQuery的結合是很難看的。附: ''不關閉'' – Ryan

+0

備註:您應驗證您的HTML代碼,這將顯示出大量潛在問題。例如,一個HTML文檔應該有一個「head」部分,而不是「header」部分。 http://validator.w3.org/ – Guffa

+0

'分鐘'大聲笑我想你忘了在代碼複製時刪除''。 –

回答

1

使用本

setTimeout(function(){$('#playlistNameInput').focus();},500); 
0

你的第一個問題是,在#step1你有隨機按鈕結束標記。 Input s是自動關閉的。

下面是步驟1和2對清理後的版本:

// Step 1 
<input id="playlistNameInput" size="10"> 
that has at least <input id="totalHours" size="2"> hours and 
<input id="totalMins" size="2"> minutes of music.</p> 
// Step 2 
<input id="songTitle" placeholder="Title"> 
<input id="songArtist" placeholder="Artist"> 
<input id="songMinutes" placeholder="Minutes"> 
<input id="songSeconds" placeholder="Seconds"> 

其次,當你點擊「準備搖滾」,它把你帶到#step2,不具有#playlistNameInput

最後,移動$('#playlistNameInput').focus()fadeOut以便它能夠運行之後的下一個步驟是在褪色。

$("#prompt").fadeOut('10000', function() 
{ 
    $("#step1").css("visibility", "visible").hide().fadeIn('slow'); 
    $('#playlistNameInput').focus(); 
}); 

完成。這是cleaned-up, working fiddle