Jquery Datepicker Chrome

Vin*_* V. 25 jquery jquery-ui datetimepicker asp.net-mvc-3

当使用jQuery UI Datepicker时,我们在Google Chrome中使用时会遇到问题:当我们输入日期高于12的日期时,它不接受它作为有效日期,这是因为chrome认为dateformat是mm/dd/YYYY.我们尝试通过添加代码来尝试将日期设置强制为dd/mm/yyyy来解决此问题

$('.date').datepicker({ dateFormat: "dd/mm/yy" });
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,所以我们的datepicker将接受dd/mm/yyyy值?我们在Google Chrome中只有这个问题,datefix适用于firefox,即&safari.我们在这个项目中使用ASPX和MVC3.

如果有人能解决我们的问题,那就太好了

谢谢

use*_*138 46

我遇到了同样的问题,并且与所有基于Webkit的Web浏览器有关.如果设置大写M,则文本框会显示带字母的蛾.对我来说最好的解决方案是从jquery.validate.js覆盖验证日期函数

创建jquery.validate.date.js并确保在jquery.validate.js之后加载它

将以下代码添加到jquery.validate.date.js

$(function() {
    $.validator.methods.date = function (value, element) {
        if ($.browser.webkit) {

            //ES - Chrome does not use the locale when new Date objects instantiated:
            var d = new Date();

            return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
        }
        else {

            return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

  • new Date(d.toLocaleDateString(value))将始终是当前日期,并且不反映值字符串. (8认同)
  • 这对我来说不起作用,toLocalDateString生成"Uncaught RangeError:Invalid language tag:30/08/2013" (5认同)

Cht*_*lek 26

user1011138解决方案对我不起作用,因为.toLocaleDateString(value)不解析value字符串

这里是我想出的解决方案=>在jquery.validate.js中找到这个函数定义:"date:function(value,element)"并用以下代码替换代码:

// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function (value, element) {
    var d = value.split("/");
    return this.optional(element) || !/Invalid|NaN/.test(new Date((/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())) ? d[1] + "/" + d[0] + "/" + d[2] : value));
},
Run Code Online (Sandbox Code Playgroud)


Kor*_*yem 5

上述解决方案不起作用,因为不推荐使用 jquery 浏览器检查抛出 jquery.validate.min.js Uncaught TypeError: Cannot read property 'webkit' of undefined. Exception occurred when checking element DateOfBirth, check the 'date'

在我的项目中,我将momentjsbootstrap datetimepicker一起使用,因此此解决方案非常有效:

 $(function () {
    $.validator.methods.date = function (value, element) {
        return this.optional(element) || moment(value, 'DD/MM/YYYY').isValid();
  };
});
Run Code Online (Sandbox Code Playgroud)

加载后立即调用 jquery.validate()


mij*_*ved 5

您必须使用“en-GB”日期验证覆盖默认的“en-US”日期验证。

  • 'en-US' => '月/日/年'
  • 'en-GB' => '日/月/年'

解决方案:

在您的项目中添加一个“jquery.validate.date.js”文件并在其中添加以下代码:

//To Fix jQuery date format 'en-GB' validation problem in Chrome
$(function () {
    $.validator.addMethod(
        "date",
        function (value, element) {
            var bits = value.match(/([0-9]+)/gi), str;
            if (!bits)
                return this.optional(element) || false;
            str = bits[1] + '/' + bits[0] + '/' + bits[2];
            return this.optional(element) || !/Invalid|NaN/.test(new Date(str));
        },
        "Please enter date in valid format [dd/mm/yyyy]"
    );
});
Run Code Online (Sandbox Code Playgroud)

并确保它在“jquery.validate.min.js”之后加载:

<script type="text/javascript" src="/Scripts/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.date.js"></script>
Run Code Online (Sandbox Code Playgroud)