我在下面有一个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',它将仅滚动背景屏幕而不是对话框 –