當用戶提交或關閉一個無效的輸入時,我有一個文本字段包裹在錯誤div中。如果用戶糾正了他的錯誤,我想刪除包裝,但是,方法會導致該字段失去焦點。jQuery:Textfield失去了重點解開()
$(special_input).live('keyup', function() {
if (input_okay && input_had_errors) {
$(this).unwrap();
}
});
沒什麼大不了的,我可以重置焦點,它工作正常...
$(this).unwrap().focus();
...到處但在IE!我試過在上面的函數中插入一個setTimeOut()
函數來解決IE缺乏對focus()
事件冒泡的支持,而且這種方法很有效。
唯一的問題是它將光標設置爲所鍵入的內容而不是結尾。 (什麼?!)
無論如何重置焦點似乎有點醜陋。有沒有辦法讓unwrap()
擺脫它首先?
謝謝。
均田的解決方案:
的理由安德和難以捉摸指出,我決定修復錯位光標的問題,這可以通過在聚焦後重新設置文本框的值來實現它再次。代碼現在看起來像這樣。
$(this).unwrap();
setTimeout(function() { $(this).focus().val($(this).val()); }, 5);
Gar。感謝您的高舉。沒有意識到它是如何工作的,但我猜想它還能怎樣?我想作爲替代方案,我會嘗試將該光標移到IE中文本框的末尾... – hellodally 2010-12-03 23:06:55