0

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

我在生日等字段上使用 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 中。

有任何想法吗?提前致谢 :)

4

1 回答 1

0

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

于 2013-02-03T11:18:23.217 回答