jQueryUI Datepicker в диалоге автофокус в IE9 - PullRequest
1 голос
/ 28 января 2012

Я могу загрузить и снова открыть диалоги jQueryUI с помощью Datepicker как первого элемента во всех браузерах, которые я пробовал ... кроме IE 9 Если Datepicker является первым элементом, который получит фокус при открытии диалога, Datepicker запустится автоматически. Я могу подавить это поведение в FireFox и Chrome. IE 9 по-прежнему запускает Datepicker при создании.

Моя функция открытия и закрытия для диалога:

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

        };

jsfiddle, показывающий эту проблему IE9 http://jsfiddle.net/stocksp/DdRLp/8/

Что я могу сделать, чтобы заставить IE вести себя, если не считать Datepicker в качестве первого элемента?

1 Ответ

1 голос
/ 28 января 2012

У меня нет IE9, доступного дома, поэтому попробуйте: http://jsfiddle.net/DdRLp/10/

Я добавил класс для ввода DatePicker, чтобы его было легче захватить.

$(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");
        }
    });

};

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...