Jquery datepicker采用美国日期格式进行验证

时间:2012-05-29 05:23:05

标签: jquery asp.net asp.net-mvc-3 datepicker

如果我选择日期> 12,我将在Chrome上收到验证消息
我使用了语法

的本地化datepicker
var abc = $("#culture").val();
        $.datepicker.setDefaults($.datepicker.regional[""]);

        $("#dob").datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'dd-mm-yy',
            yearRange: '-90:-15',
            defaultDate: '-90y'

        });
        $.datepicker.setDefaults($.datepicker.regional[abc]);


另一个问题:我在控制器上以不合适的格式获取日期,这就是为什么我的数据库存在错误的条目(日期代替月份和月份)...建议我可能的解决方案......

我发现的相关内容是LINK 1

Link2

Link 3

但以上都没有效果......

4 个答案:

答案 0 :(得分:0)

试试这个:

$("#dob").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'mm-dd-yy',
    yearRange: '-90:-15',
    defaultDate: '-90y'
});  

var abc = $("#culture").val();  

$("#dob").datepicker("setDate", new Date(abc));

$("#dob").datepicker({
    changeMonth: true,
    changeYear:  true,
    dateFormat:  'dd-mm-yy',
    yearRange:   '-90:-15',
    defaultDate: '-90y'
});

否则,您可以将日期作为刺痛,然后转换为您所需的格式。

如果你正在运行jQuery,你可以使用datepicker UI库的parseDate函数将你的字符串转换为日期:

var d = $.datepicker.parseDate("DD, MM dd, yy",  "Sunday, February 28, 2010");

然后使用formatDate方法跟进它,使其达到您想要的字符串格式:

var datestrInNewFormat = $.datepicker.formatDate( "mm/dd/yy", d);

如果你没有运行jQuery当然它可能不是最好的计划,因为你需要jQuery核心以及datepicker UI模块......最好从上面的Segfault建议使用date.js

答案 1 :(得分:0)

首先,如果您使用的是MVC,并且您从服务器显示了一些日期,则应显示如下日期:

@Html.TextBox("InsertDate", Model.InsertDate.ToString("dd/MM/yyyy"), new { @class = "date" })

在你的jquery中:

$('.date').datepicker({ dateFormat: "dd/mm/yy" }).val();

如果您的文化是en-US,ModelState.IsValid将会中断。 对此的肮脏黑客是这样的:

var insertDateStr = ModelState.Values.ToList()[3].Value.AttemptedValue;
var insertDate = DateTime.ParseExact(insertDateStr, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

最后,对于镀铬上的红色,只需在文本框的样式中添加背景颜色为白色。

@Html.TextBox("InsertDate", Model.InsertDate.ToString("dd/MM/yyyy"), new { @class = "date", @style = "background-color: white;" })

它很脏但是有效..

答案 2 :(得分:0)

解决方案并非如此简单,您应该最终覆盖jquery验证规则。我建议使用此处MVC 3 jQuery Validation/globalizing of number/decimal field

中所述的Globalize插件

答案 3 :(得分:0)

如果您希望ASP.Net以<globalization culture="en-GB"/>格式确认日期,请在web.config中使用"dd-MM-yyyy"

reference