Kendo 日期选择器 Header
Kendo DatePicker Header
我正在尝试用两个组合框替换 DatePicker 的 header - 一个用于月,一个用于年。创建 DatePicker 后(我正在使用 MVC 助手),我可以使用基本的 javascript 成功地将 ComboBox 手动插入到 DOM 中。都好。问题是当我打开 DatePicker,然后展开 ComboBox 时,DatePicker 关闭。大概是因为它认为它失去了焦点?
有什么想法吗?
编辑:
我已经尝试过 DatePicker 和带有手动 hiding/showing 的常规日历,当封闭 div loses/gains 焦点时。尝试使用下拉菜单时,两种解决方案都会关闭。我还尝试了 Kendo ComboBox 和香草 HTML
日历和
$(document).on("ready", function () {
$("#calendar-background").hide();
$("#datepicker").focusout(function () { $("#calendar-background").hide(); });
$("#datepicker").focusin(function () { $("#calendar-background").show();});
var div = $("#calendar .k-header");
div.html("<select id='monthDD3'>"+
"<option value='1'>January</option>" +
"<option value='2'>February</option>" +
"<option value='3'>March</option>" +
"<option value='4'>April</option>" +
"<option value='5'>May</option>" +
"<option value='6'>June</option>" +
"<option value='7'>July</option>" +
"<option value='8'>August</option>" +
"<option value='9'>September</option>" +
"<option value='10'>October</option>" +
"<option value='11'>November</option>" +
"<option value='12'>December</option>" +
"</select>");
});
<div id="calendar-outer" class="k-widget k-datepicker k-header" style="width: 150px;">
<span class="k-picker-wrap k-state-default">
<input aria-readonly="false" aria-disabled="false" aria-owns="datepicker_dateview" aria-expanded="false" role="combobox" class="k-input" data-role="datepicker" id="datepicker" name="datepicker" style="width: 100%;" value="10/10/2011" type="text">
<span aria-controls="datepicker_dateview" role="button" unselectable="on" class="k-select">
<span unselectable="on" class="k-icon k-i-calendar">select</span></span></span>
<div id="calendar-background" style="display:inline;position: absolute;z-index:99999">
@(Html.Kendo().Calendar()
.Name("calendar")
)
</div>
</div>
我没有使用 focusout,而是需要手动检查用户是否点击了任何后代元素,如下所示:Use jQuery to hide a DIV when the user clicks outside of it。
$(document).mouseup(function (e)
{
var container = $("#calendar-outer");
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
$("#calendar-background").hide();
}
});
我正在尝试用两个组合框替换 DatePicker 的 header - 一个用于月,一个用于年。创建 DatePicker 后(我正在使用 MVC 助手),我可以使用基本的 javascript 成功地将 ComboBox 手动插入到 DOM 中。都好。问题是当我打开 DatePicker,然后展开 ComboBox 时,DatePicker 关闭。大概是因为它认为它失去了焦点?
有什么想法吗?
编辑:
我已经尝试过 DatePicker 和带有手动 hiding/showing 的常规日历,当封闭 div loses/gains 焦点时。尝试使用下拉菜单时,两种解决方案都会关闭。我还尝试了 Kendo ComboBox 和香草 HTML
日历和
$(document).on("ready", function () {
$("#calendar-background").hide();
$("#datepicker").focusout(function () { $("#calendar-background").hide(); });
$("#datepicker").focusin(function () { $("#calendar-background").show();});
var div = $("#calendar .k-header");
div.html("<select id='monthDD3'>"+
"<option value='1'>January</option>" +
"<option value='2'>February</option>" +
"<option value='3'>March</option>" +
"<option value='4'>April</option>" +
"<option value='5'>May</option>" +
"<option value='6'>June</option>" +
"<option value='7'>July</option>" +
"<option value='8'>August</option>" +
"<option value='9'>September</option>" +
"<option value='10'>October</option>" +
"<option value='11'>November</option>" +
"<option value='12'>December</option>" +
"</select>");
});
<div id="calendar-outer" class="k-widget k-datepicker k-header" style="width: 150px;">
<span class="k-picker-wrap k-state-default">
<input aria-readonly="false" aria-disabled="false" aria-owns="datepicker_dateview" aria-expanded="false" role="combobox" class="k-input" data-role="datepicker" id="datepicker" name="datepicker" style="width: 100%;" value="10/10/2011" type="text">
<span aria-controls="datepicker_dateview" role="button" unselectable="on" class="k-select">
<span unselectable="on" class="k-icon k-i-calendar">select</span></span></span>
<div id="calendar-background" style="display:inline;position: absolute;z-index:99999">
@(Html.Kendo().Calendar()
.Name("calendar")
)
</div>
</div>
我没有使用 focusout,而是需要手动检查用户是否点击了任何后代元素,如下所示:Use jQuery to hide a DIV when the user clicks outside of it。
$(document).mouseup(function (e)
{
var container = $("#calendar-outer");
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
$("#calendar-background").hide();
}
});