简体   繁体   English

未来日期提出错误jquery ui datepicker

[英]future dates raise error jquery ui datepicker

I have that script for jquery ui datepicker 我有jquery ui datepicker的脚本

var date = new Date(new Date().setDate(new Date().getDate() - 1));


$('.date').datepicker({
    dateFormat: 'dd-mm-yy',
    defaultDate: date,
    minDate: Date.parse("1900-01-01"),
    maxDate: Date.parse("2100-01-01"),
});

and in my view I have: 在我看来,我有:

@Html.TextBoxFor(m => m.EndDate, new { @class = "date" })

It works ok for yesterday and previous dates, but raises error if i'll select today or higher date 它适用于昨天和之前的日期,但如果我选择今天或更高的日期,则会引发错误

在此输入图像描述

what's wrong? 怎么了?

EDIT 编辑

GOT IT It's about my format. GOT IT这是关于我的格式。 I want it to be dd-mm-yy but when I select for example 15-05-2016 it says that there isn't 15 month in year. 我希望它是dd-mm-yy,但是当我选择例如15-05-2016时,它表示一年中没有15个月。 How can I solve that? 我怎么解决这个问题?

Date.parse() returns the number of milliseconds since January 1, 1970 for a date string, and minDate and maxDate can accept a number, but it is used in this way: Date.parse()返回自1970年1月1日以来日期字符串的毫秒数, minDatemaxDate可以接受一个数字,但它以这种方式使用:

Number : A number of days from today. 数字 :从今天起的几天。 For example 2 represents two days from today and -1 represents yesterday 例如, 2表示从今天开始的两天, -1表示昨天

Therefore, the validation is expecting you to enter a date that is between 2208988800000 days in the past and 4102444800000 days in the future . 因此,验证期待您输入之间的日期2208988800000在过去的日子和4102444800000在以后的日子里 These dates are incredibly distant, and are too large for a Date to handle. 这些日期非常遥远,而且对于Date来说太大了。

To fix it, use new Date() instead. 要修复它,请改用new Date()

$('.date').datepicker({
    dateFormat: 'dd-mm-yy',
    defaultDate: -1,
    minDate: new Date("1900-01-01"),
    maxDate: new Date("2100-01-01")
});

JSFiddle 的jsfiddle

I have not tried it myself, but it may solve this problem. 我自己没试过,但它可以解决这个问题。

change above date format like this 改变这样的日期格式

dateFormat: 'mm-dd-yy',

or simply remove that line because default dateFormat is mm/dd/yy 或者只是删除该行,因为默认的dateFormat是mm/dd/yy

As I get unobtrusive validation needs to be overloaded for different format this answer helped me. 由于我得到不显眼的验证需要为不同的格式重载, 这个答案帮助了我。

$.validator.addMethod('date',
function (value, element) {
    if (this.optional(element)) {
        return true;
    }

    var ok = true;
    try {
        $.datepicker.parseDate('dd-mm-yy', value);
    }
    catch (err) {
        ok = false;
    }
    return ok;
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM