2014-01-11 4 views
0

Я пытаюсь использовать метод focus() jQuery, и я не понимаю, почему он не работает. Вот скрипка: http://jsfiddle.net/3RGRv/4/

При нажатии «Готова к року», обработчик кнопки не вызываются, а внутри него, $('#playlistNameInput').focus();

Консоли регистрирует сообщения признает, что это было достигнуто и обработано, но до сих пор не фокус случается. Любая идея, почему это так?

+0

Если элемент не отображается (или рассматривается как часть макета), он не может быть сфокусирован. Подождите, пока ваше исчезновение в анимации не закончится, а затем вызовите 'focus'. Если это не сработает, я не знаю, почему. Сочетание Backbone и jQuery - это довольно трудно понять. Постскриптум '' 'не закрывается' ' – Ryan

+0

Примечание: вы должны проверить свой HTML-код, который покажет много потенциальных проблем. Например, HTML-документ должен иметь раздел 'head', а не раздел' header'. http://validator.w3.org/ – Guffa

+0

' минут' LOL Я думаю, что вы забыли удалить '', когда вы скопировали код. –

ответ

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"> 

Во-вторых, при нажатии кнопки «Готов к Rock», это приведет вас к #step2, который не имеет #playlistNameInput.

Наконец, переместите $('#playlistNameInput').focus() в fadeOut так, что он будет запущен после того, как следующий шаг был утрачен в.

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

Done. Вот cleaned-up, working fiddle.