2012-01-28 99 views
1

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

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

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

我没有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"); 
     } 
    }); 

}; 

}); 
+0

非常好,比我在黑暗中刺得好! – Pablo 2012-01-28 03:21:14

相关问题