2014-01-11 94 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