IE9 对话框中的 jQueryUI Datepicker 自动对焦

发布于 2024-12-29 05:17:04 字数 1300 浏览 1 评论 0原文

我能够在我尝试过的所有浏览器中加载并重新打开 jQueryUI 对话框,并将 Datepicker 作为第一个元素......除了 IE 9。 如果日期选择器是对话框打开时第一个接收焦点的元素,则日期选择器将自动启动。我能够在 FireFox 和 Chrome 中抑制这种行为。 IE 9 仍然在创建时启动日期选择器。

我的对话框的打开和关闭功能是:

open: function (event, ui) {
   $('#Date').blur();  // kill the focus
   if ($('#Date').hasClass('hasDatepicker')) {
        $("#Date").datepicker('enable');
   }
   else {
      $("#Date").datepicker();
   }
},
close: function (event, ui) {
    $("#Date").datepicker('disable');
}

“单击”代码

var dialogs = {};
 $('#clicker').click(function (e) {
     if (!dialogs['dlg']) {
        loadAndShowDialog('dlg');
      } else {
         dialogs['dlg'].dialog('open');
      }
  });

var loadAndShowDialog = function (id) {
 dialogs[id] = $('#dlg').clone().find('#ChangeMe').attr('id', 'Date').end()
      .appendTo(document.body)
      .dialog({ // Create the jQuery UI dialog
          title: 'Testing',
          modal: true,
          resizable: true,
          draggable: true,
          width: 300,
          open: see above
          close: see above

        };

这是显示此 IE9 问题的 jsfiddle http: //jsfiddle.net/stocksp/DdRLp/8/

除了不将 Datepicker 放置为第一个元素之外,我还能做些什么来让 IE 正常工作?

I'm able to load and reopen jQueryUI Dialogs with a Datepicker as the first element in all browsers I've tried ... except IE 9.
If a Datepicker is the first element to receive focus when the Dialog opens, the Datepicker will auto launch. I'm able to suppress this behavior in FireFox and Chrome. IE 9 still launches the Datepicker on creation.

My open and close function for the Dialog are:

open: function (event, ui) {
   $('#Date').blur();  // kill the focus
   if ($('#Date').hasClass('hasDatepicker')) {
        $("#Date").datepicker('enable');
   }
   else {
      $("#Date").datepicker();
   }
},
close: function (event, ui) {
    $("#Date").datepicker('disable');
}

Here is the 'click' code

var dialogs = {};
 $('#clicker').click(function (e) {
     if (!dialogs['dlg']) {
        loadAndShowDialog('dlg');
      } else {
         dialogs['dlg'].dialog('open');
      }
  });

var loadAndShowDialog = function (id) {
 dialogs[id] = $('#dlg').clone().find('#ChangeMe').attr('id', 'Date').end()
      .appendTo(document.body)
      .dialog({ // Create the jQuery UI dialog
          title: 'Testing',
          modal: true,
          resizable: true,
          draggable: true,
          width: 300,
          open: see above
          close: see above

        };

jsfiddle showing this IE9 problem http://jsfiddle.net/stocksp/DdRLp/8/

What can I do to get IE to behave, short of not placing the Datepicker as the first element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雪若未夕 2025-01-05 05:17:04

我家里没有 IE9,所以请尝试一下: http://jsfiddle.net/DdRLp/10 /

我向日期选择器输入添加了一个类,以使其更容易抓取。

$(function() {

$(document).on("dialogcreate", "#dlg", function() {
    $(".date_picker").datepicker();
    $(".date_picker").datepicker("disable");
});

var dialogs = {};
$('#clicker').click(function(e) {
    if (!dialogs['dlg']) {
        loadAndShowDialog('dlg');
    } else {
        dialogs['dlg'].dialog('open');
    }
});
var loadAndShowDialog = function(id) {

    dialogs[id] = $('#dlg').clone().find('#ChangeMe').attr('id', 'Date').end().appendTo(document.body).dialog({ // Create the jQuery UI dialog
        title: 'Testing',
        modal: true,
        resizable: true,
        draggable: true,
        width: 300,
        open: function(event, ui) {
            $("div#dlg form input").blur(); //takes focus off inputs 
            $(".date_picker").datepicker("enable");
        },
        close: function(event, ui) {
            $(".date_picker").datepicker("disable");
        }
    });

};

});

I don't have IE9 available at home so give this a try: http://jsfiddle.net/DdRLp/10/

I added a class to the datepicker input to make it easier to grab.

$(function() {

$(document).on("dialogcreate", "#dlg", function() {
    $(".date_picker").datepicker();
    $(".date_picker").datepicker("disable");
});

var dialogs = {};
$('#clicker').click(function(e) {
    if (!dialogs['dlg']) {
        loadAndShowDialog('dlg');
    } else {
        dialogs['dlg'].dialog('open');
    }
});
var loadAndShowDialog = function(id) {

    dialogs[id] = $('#dlg').clone().find('#ChangeMe').attr('id', 'Date').end().appendTo(document.body).dialog({ // Create the jQuery UI dialog
        title: 'Testing',
        modal: true,
        resizable: true,
        draggable: true,
        width: 300,
        open: function(event, ui) {
            $("div#dlg form input").blur(); //takes focus off inputs 
            $(".date_picker").datepicker("enable");
        },
        close: function(event, ui) {
            $(".date_picker").datepicker("disable");
        }
    });

};

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文