JQuery Datepicker日历控件弹出窗口仅在Firefox中第二次打开

时间:2015-08-04 00:11:16

标签: jquery jquery-ui-datepicker

此问题仅在Firefox中复制(IE和Chrome正在运行预期)。最初页面加载时,如果我们点击日期选择器文本框,则会打开日历控件。现在,如果用户尝试单击日历控件外部,则日历控件弹出窗口将关闭。现在尝试再次单击datepicker文本框。日历弹出窗口不会显示。日历控件(ui-datepicker-div)"显示"属性在Firefox中仅设置为none。

Fiddler Sample Url

有谁可以帮我解决这个问题?

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)));           
        }       
    });
});

2 个答案:

答案 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('');
                }
            }