此问题仅在Firefox中复制(IE和Chrome正在运行预期)。最初页面加载时,如果我们点击日期选择器文本框,则会打开日历控件。现在,如果用户尝试单击日历控件外部,则日历控件弹出窗口将关闭。现在尝试再次单击datepicker文本框。日历弹出窗口不会显示。日历控件(ui-datepicker-div)"显示"属性在Firefox中仅设置为none。
有谁可以帮我解决这个问题?
HTML:
<input type="text" id="maturitydatepicker"/>
JS:
$(document).ready(function () {
$("#maturitydatepicker").datepicker({
showOn: 'both',
dateFormat: 'dd-MM-yy',
buttonImageOnly: true,
showButtonPanel: true,
changeMonth: true,
changeYear: true,
closeText: 'clear',
buttonText: 'Select Date',
onClose: function (dateText, inst) {
if ($(window.event.srcElement).hasClass('ui-datepicker-close')) {
document.getElementById(this.id).value = '';
}
},
onChangeMonthYear: function (y, m, i) {
var d = i.selectedDay;
$(this).datepicker('setDate', new Date(y, m - 1, OnMonthYearChangeDateCheck(d, m - 1, y)));
}
});
});
答案 0 :(得分:0)
你应该像这样添加参数
$(document).ready(function (e)
并声明一个这样的变量:
var evt = e || window.event
if ($(evt.srcElement).hasClass('ui-datepicker-close'))
因为FF没有window.event,所以你必须声明另一个
答案 1 :(得分:0)
以下代码块在所有浏览器中解决了我的问题。
onClose: function () {
var event = arguments.callee.caller.caller.arguments[0];
// If "Clear" gets clicked, then really clear it
if ($(event.delegateTarget).hasClass('ui-datepicker-close')) {
$(this).val('');
}
}