我有一個登錄表單,通過AJAX獲取,我想在jQuery UI對話框中顯示,並希望第一個輸入字段具有自動對焦。我已經使用下面的代碼工作,但我覺得它是相當黑客,並認爲應該有一個更好的解決方案。此外,Chrome 23,IE9和Firefox 16的行爲似乎一致,所以我想借此機會對這些內容有更深入的瞭解,並希望有人願意闡明一些看法。關注jQueryUI中的第一個表單元素對話框
我在這裏和其他地方發現了許多相關的問題,但沒有一個提出的答案似乎對我有用。奇怪的是,許多問題都出現在相反的問題上。即消除自動對焦...
表格提取等由鍵Alt+l
使用jQuery Hotkey插件觸發。第一個輸入元素具有id'user'。該代碼是
$(document).bind('keydown', 'Alt+l', function() {
$('<div>', {
title: 'Log in'
}).load('?action=login').dialog({
modal: true,
show: 'fade',
hide: 'fade',
resizable: false,
draggable: false,
open: function (e) {
// Hack alert!
setTimeout(function() {
$('input:first', e.target).focus();
}, 100);
}
});
//$('#user').focus(); <- won't work; $('#user').length == 0
});
我不明白的事情是爲什麼我必須把focus()
叫了暫停裏面這個工作。如果選擇未被超時延遲,則選擇$('input:first', e.target)
(或等價物,註釋掉,$('#user')
)爲空。
如果任何人都可以解釋這種行爲,或者可能提供更好的解決方案,將不勝感激!
更新
取出的HTML是隻是一個普通的形式
<form action="?action=login" method="post">
<table>
<tr><td><label for="user">Username:</label>
<td><input id="user" type="text" name="user">
<tr><td><label for="pass">Password:</label>
<td><input id="pass" type="password" name="pass">
<tr><td><td><input type="submit" value="Log in">
</table>
</form>
注意,在URL ?action=login
的響應是GET不同,POST請求
你可以舉個實際的例子嗎? –
嗨哈莉。請發佈您的HTML以及。 –