0

可能重复:
使用 Javascript,我如何确保日期范围有效?

我允许用户在页面上输入日期,并且我的一位测试人员正确地破坏了数据库保存并出现以下错误:

SqlDateTime 溢出。必须介于 1753 年 1 月 1 日上午 12:00:00 和 9999 年 12 月 31 日晚上 11:59:59 之间。

在将日期发送到服务器之前,是否有现有的函数可以在客户端在 jQuery 或 JavaScript 中验证这一点,以便我可以向用户提供反馈?我宁愿不必自己写(可能不完整)。

谢谢

4

4 回答 4

2

javascript 重载><比较运算符来处理日期。

if (yourDate > new Date('1/1/1753 12:00:00 AM') && 
    yourDate < new Date('12/31/9999 11:59:59 PM')) {
    // date is in your valid range
} else {
    // date is not in your valid range
}

http://jsfiddle.net/jbabey/UB9NR/

请记住,javascript 验证仅用于性能,不会增加安全性;它应始终辅以服务器端验证。

于 2012-06-20T13:41:07.143 回答
1

使用 Datepicker 插件http://jqueryui.com/demos/datepicker/#min-max 并使用日期范围方法限制用户输入错误范围

http://jqueryui.com/demos/datepicker/#date-range

代码

$(function() {
        $( "#from" ).datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onSelect: function( selectedDate ) {
                $( "#to" ).datepicker( "option", "minDate", selectedDate );
            }
        });
        $( "#to" ).datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onSelect: function( selectedDate ) {
                $( "#from" ).datepicker( "option", "maxDate", selectedDate );
            }
        });
    });
于 2012-06-20T13:41:16.600 回答
1

您需要日期 js库。我认为这个函数就是你要找的Date.validateDay。见文档

于 2012-06-20T13:42:24.517 回答
1

您可以尝试使用 jQuery 验证插件在客户端处理此问题。但不要只在客户端这样做。在发送到数据库之前,始终始终在服务器端执行此操作。

根据 jQuery文档,代码可以很简单。

$("#myform").validate({
  rules: {
    field: {
      required: true,
      date: true
    }
  }
});

如果您想要自定义日期格式,这个答案值得一看

于 2012-06-20T13:37:00.727 回答