我正在显示一个jQuery UI对话框窗口,其中包含一个jQuery UI datepicker控件。问题是对话框窗口上的第一个表单字段是日期选择器,因此它在窗口打开时获得焦点,这反过来导致日期选择器窗口自动打开。我不希望这种情况发生。
我试过调用
$('#Date').datepicker('hide')
然后打开对话框窗口的功能,并且在使对话框打开的代码之后但是当达到该代码时它不起作用,则datepicker窗口尚未打开。
如何在对话框窗口显示时打开日期选择器窗口,但在用户点击输入时仍然打开它?
答案 0 :(得分:7)
您可以使用图标触发器:http://jqueryui.com/demos/datepicker/#icon-trigger
并且,如果需要,阻止用户输入日期。
我创建了一个带有日期选择器的对话框,并且无法在FF或Chrome中复制该问题。在IE中实现了它。
$(".datepicker").datepicker({
dateFormat: 'yy-mm-dd '
});
$(".datepicker").datepicker("disable");
$("#dialog").dialog({
width: 400,
modal: true,
open: function(event, ui) {
$(".datepicker").datepicker("enable");
}
});
根据之前的回答:How to blur the first form input at the dialog opening
答案 1 :(得分:6)
您可以在对话框未打开时禁用日期选择器。
$('#datepicker').datepicker({
...
disabled: true
});
$('#dialog').dialog({
open: function(event, ui) {
$('#datepicker').datepicker('enable');
},
close: function(event, ui) {
$('#datepicker').datepicker('disable');
},
...
});
答案 2 :(得分:0)
定义对话框时,可以指定要在打开时获得焦点的元素。将焦点设置为对话框中的其他元素
$('#myDialog').dialog({
open: function (event, ui)
{
$('#myInputBox').focus();
}
});
您也可以通过调用将openpicker隐藏在打开的事件代码中。
答案 3 :(得分:0)
尝试这一行代码
$(document).ready (function () {
$('#dialog_modal_body').on("click", ".datepicker", function(){
$("#ui-datepicker-div").css("z-index", "100000");
});
});
答案 4 :(得分:0)
在它之前添加一个隐藏元素,它会尝试自动对焦。
这将使您的日期选择器在打开对话框时不会被关注。
<span class="ui-helper-hidden-accessible"><input type="text"/>Prevents autofocus from opening start datepicker on dialog load</span>