每當我在下面的插入超鏈接文本輸入中輸入內容時,所有單詞都將以textarea
作爲它的後面。確定和取消按鈕工作正常,但我無法專注於文本輸入。jQuery UI聚焦竊取
我們使用jQuery UI 1.10.1。它與以前版本的jQuery 1.8.x很好地協作。
我檢查代碼的jQuery的背後,它有以下幾種方法打開一個模式對話框時調用:
_focusTabbable: function() {
// Set focus to the first match:
// 1. First element inside the dialog matching [autofocus]
// 2. Tabbable element inside the content element
// 3. Tabbable element inside the buttonpane
// 4. The close button
// 5. The dialog itself
var hasFocus = this.element.find("[autofocus]");
if (!hasFocus.length) {
hasFocus = this.element.find(":tabbable");
}
if (!hasFocus.length) {
hasFocus = this.uiDialogButtonPane.find(":tabbable");
}
if (!hasFocus.length) {
hasFocus = this.uiDialogTitlebarClose.filter(":tabbable");
}
if (!hasFocus.length) {
hasFocus = this.uiDialog;
}
hasFocus.eq(0).focus();
},
_keepFocus: function (event) {
function checkFocus() {
var activeElement = this.document[0].activeElement,
isActive = this.uiDialog[0] === activeElement ||
$.contains(this.uiDialog[0], activeElement);
if (!isActive) {
this._focusTabbable();
}
}
event.preventDefault();
checkFocus.call(this);
// support: IE
// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
// so we check again later
this._delay(checkFocus);
},
是從這裏取:http://code.jquery.com/ui/1.10.1/jquery-ui.js
有趣...我有一個與垂直內容的滾動對話框中的錨標籤類似的問題。如果向下滾動並單擊對話框中的任意位置,焦點將滾動回到對話框中最上面的錨點標記。我已經將它追溯到你所引用的代碼,但我不願意評論那些代碼......我也不應該......我覺得解綁是骯髒的。 – incutonez
這是jQuery UI中的一個錯誤:http://bugs.jqueryui.com/ticket/9101。應該在下一個版本中修復。 – Noyo
該錯誤在jQuery UI 1.11.0中修復。這是我正在運行的版本,但我仍然觀察到這個問題。 –