我在下面有一個jQuery對話框。我使用的是jQuery UI 1.11。jQuery對話框失去焦點滾動
$("#contactContainer").dialog({
closeOnEscape: false,
modal: true,
dialogClass: 'contactsFooter',
open: function(event, ui) {
$(".ui-dialog-titlebar-close").show();
$('#dialog_footer').remove();
$(".contactsFooter").append('<div class="" id="dialog_footer"><div class="dialog-footer-buttons"><button type="button" id ="close" class="button-style-2" onclick="$(\'#hasChangedForm\').val(\'\');" style="margin-left: 5px;">Cancel</button></div></div>');
},
autoOpen: false,
width: 300,
minHeight: 'auto',
maxHeight: 400,
position: { my: 'top', at: 'top+50' },
close:function() {
$('#contactContainer').dialog("option", "position", { my:"top", at:"top+50", of: window });
$('#contactContainer').html('');
}
});
$("#contactContainer").dialog('open');
這裏是Fiddle。在這種小提琴,
單擊任意文本框的(手段焦點。在這個例子中它是一個我們有值「測試在這裏」)。
現在通過單擊對話框的滾動條並將其向下/向上拖動並查看發生了什麼來滾動對話框。它放鬆了我們點擊的文本框的焦點。如果我按標籤,它將焦點再次設置到第一個字段。這很奇怪。
如果我用鼠標滾動,焦點仍然在同一個字段上。這個是正常的。
坦率地說,我不知道爲什麼會發生這種情況。有人可以幫助我如何防止滾動時丟失焦點的對話框?我希望把焦點保留在同一個領域。
這很有趣..「tabindex」有什麼問題。你可以解釋嗎? –
我記得正確的解釋,因爲幾個月前我必須處理這個問題。但是滾動條被放置在'$(「。ui-dialog」)'padding上,所以,當你點擊滾動條時就像點擊容器一樣,這會導致你失去焦點。刪除tabindez會使元素不可聚焦,因此當您點擊它時,不會失去對輸入的關注。然後,在某些地方,我不記得JQuery UI有正確的處理程序,以正確的方式重新添加可聚焦屬性。 –
是的,你是對的!問題是'tabindex',但在我的情況下,我無法刪除它,因爲只有當我們添加'tabindex'時,默認的瀏覽器導航操作(空格鍵和shift +空格鍵)才能在彈出窗口中工作。如果我們在對話框中按下shift +空格鍵時刪除了'tabindex',它將僅滾動背景屏幕而不是對話框 –