jQuery/JavaScript:这是约会吗?(验证是否是日期)

Oma*_*mar 16 javascript validation jquery date datepicker

我有datepicker,但我找不到验证用户条目是否为日期的方法以及是否遵循所需格式(格式:yyyy-mm-dd)

这是我的日期选择器:

$("input[name='date']").datepicker({ dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, numberOfMonths: 3, showButtonPanel: true});
Run Code Online (Sandbox Code Playgroud)

我查看了这个解决方案," 如何验证datepicker以禁止/拒绝某些日期? ".它看起来很简单,但它只检查它是否是一个周末.它没有检查用户输入的日期,随机数或拼写错误(1231 .... 30-30-2011 ... 30/30/2011 ... 212-565-565 ......等) .

请摆弄我的小提琴:http://jsfiddle.net/MDa4A/




附加信息(11-10-2011):(
尝试这些jsFiddles并键入0-0-0或0/0/0)

我用你的答案提出了一个解决方案.当我使用格式"yy-mm-dd"时它可以工作:http://jsfiddle.net/LyEvQ/

但是当我使用不同的格式(Ej.:"mm/dd/yy")时它完全没用:http://jsfiddle.net/LyEvQ/1/

我需要两个都工作.你能帮忙吗?

Asm*_*mor 34

if (Date.parse("some string")) {
   //Valid date
} else {
  //Not a valid date
}
Run Code Online (Sandbox Code Playgroud)

  • 这是不正确的,因为它返回数字而不是NaN,例如2014-11-31,这是不存在的. (8认同)

Jam*_*son 10

这样的事情应该有效:

jQuery.validator.addMethod("customDateValidator",
    function(value, element) {
        try { jQuery.datepicker.parseDate("mm/dd/yyyy", value); return true; }
        catch(e) { 
            return false;
        }
    },
    "Please enter a valid date"
);

$("input[name='date']").rules("add", { customDateValidator:true });
Run Code Online (Sandbox Code Playgroud)

  • 如果你正在使用datepicker(你可能是),这似乎比仅使用`Date.parse更好的验证器 (2认同)
  • 如果有人得到错误"在10号位置缺少数字"或解析不工作,那么尝试`"mm/dd/yy"`而不是"mm/dd/yyyy" (2认同)

Jam*_*ill 7

使用该Date.parse()方法检查日期是否有效:

var timestamp = Date.parse($("input[name='date']").val()) 

if (isNaN(timestamp) == false) { 
    var d = new Date(timestamp); 
} 
Run Code Online (Sandbox Code Playgroud)

  • 它既不验证日期是否有效,只检查当天是1到31之间,月份是1到12之间,等等."Date.parse('2000-11-31')== Date.parse('2000- 12-01' )` (3认同)
  • @TGarrett,难道你不认为可读,可维护的代码应该是目标吗? (2认同)