Jquery UI datePicker日期范围不受附加输入的限制

时间:2013-02-03 10:39:38

标签: jquery jquery-ui datepicker

这个问题与其他问题非常相似,但并不完全相同 - 所以请仔细阅读。

我在诸如生日之类的字段上使用datePicker - 我仅将范围限制为过去的日期。 我需要验证日期。输入不是只读的,我不希望它。

$(element).datepicker({
        dateFormat: dateFormat,
        changeMonth: true,
        changeYear: true,
        yearRange: "1900:2050",
        maxDate: new Date,
        constrainInput: "true",
        currentText:"Today",
        showButtonPanel: true,
        onClose: function (dateText, inst){
            dPickerDate=$('#'+this.id).datepicker("getDate");
            pDate=$.datepicker.formatDate(dateFormat, dPickerDate);
            if(dateText!=pDate)
                {
                $('#errorFor'+this.id).removeClass("hidden");
                }
            else
                {
                    //do some calculations to save the date... for internal purposes
                                    }

    });

我的想法是检查输入的日期是否可以在日期选择器中选择 - 否则表示它无效。适用于验证目的。

问题是datePicker允许我输入不在日期范围内的日期。在fireBug中调试时,我可以看到datePicker的值实际上是无效的未来日期,即使它没有在datePicker中显示为选中。

有什么想法吗?在此先感谢:)

1 个答案:

答案 0 :(得分:0)

是的,因为你没有进行任何输入验证。尽管您的yearRange是1900:2050,但这并不意味着用户无法通过键入键盘来输入其他年份。我建议只设置日期字段,以便只能通过datepicker ui访问,或者你可以创建一个函数来检查用户输入的日期。