2011-05-07 3 views
2

Я думал, что все будет просто. ПростоSimplemodal - как установить фокус на элемент в onShow-функции

... 
onShow:function(dialog){ 
    dialog.data.find("input#myInput").focus(); 
} 
... 

но он не работает.

Есть ли конфликт с функцией focus() функции SimpleModal?

Я заметил, что если я поставлю предупреждение() внутри функции onShow, оно появится, прежде чем модальный будет виден. Есть ли способ вызвать функцию (т. Е. Focus()) после отображения модального, но без ввода пользователем (без запуска пользователем какого-либо события)?

Кроме того, когда я пытался использовать SimpleModal-х

focus:true 

с dialog.data =

'<div class="myModal login">'+ 
    '<div class="modalTitle">Title</div>'+ 
    '<div class="modalContent">'+ 
     '<label for="username">Login: </label>'+ 
     '<input id="username" />'+ 
     '<br />'+ 
     '<label for="password">Pass: </label>'+ 
     '<input id="password" type="password" />'+ 
     '<br />'+ 
     '<div class="confirmButton no simplemodal-close">Cancel</div>'+ 
     '<div class="confirmButton yes">Login</div>'+ 
    '</div>'+ 
'</div>' 

внимание на обертке (по крайней мере я так думаю), и пользователь должен нажать вкладку, чтобы добраться до первый элемент ввода.

Любая помощь будет замечательной,

Greg.

ответ

1

Попробуйте это:

onShow:function(dialog){ 
    setTimeout(function(){ 
    dialog.data.find("input#myInput").focus(); 
    },50); 
} 

Надеется, что это помогает. Cheers

+0

Спасибо, мне пришлось настроить его на 200, чтобы он работал. Ваш ответ был подсказкой, рассказывающей мне, почему это не сработало в первую очередь - я тоже использовал функцию onOpen, с некоторыми анимациями. Как только я прокомментировал всю функцию onOpen, он работал даже без setTimeout(). – gswierczynski

+0

Я рад помочь вам. –