jQuery/JavaScript:是约会吗? (验证是不是是日期)[重复]
Posted
技术标签:
【中文标题】jQuery/JavaScript:是约会吗? (验证是不是是日期)[重复]【英文标题】:jQuery/JavaScript: Is it a date? (Validate whether is a date) [duplicate]jQuery/JavaScript:是约会吗? (验证是否是日期)[重复] 【发布时间】:2011-12-24 15:17:34 【问题描述】:我有日期选择器,但我找不到验证用户输入是否为日期以及是否遵循所需格式(格式:yyyy-mm-dd)的方法 p>
这是我的日期选择器:
$("input[name='date']").datepicker( dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, numberOfMonths: 3, showButtonPanel: true);
我查看了这个解决方案,“How to validate datepicker to forbid/reject certain dates?”。它看起来很简单,但它只检查是否是周末。它不会检查用户输入的日期、随机数或拼写错误(1231....30-30-2011...30/30/2011...212-565-565...等) .
请拨弄我的小提琴:http://jsfiddle.net/MDa4A/
附加信息(2011 年 11 月 10 日): (试试这些 jsFiddles 并输入 0-0-0 或 0/0/0)
我根据您的回答想出了一个解决方案。当我使用 "yy-mm-dd" 格式时它可以工作:http://jsfiddle.net/LyEvQ/
但是当我使用不同的格式时它完全没用 (Ej.: "mm/dd/yy"): http://jsfiddle.net/LyEvQ/1/
我需要两者都工作。你能帮忙吗
【问题讨论】:
***.com/questions/3880615/isdate-in-jquery 请用你的答案更新我的小提琴:http://jsfiddle.net/MDa4A/ 【参考方案1】:if (Date.parse("some string"))
//Valid date
else
//Not a valid date
【讨论】:
您能详细说明一下吗? w3schools.com/jsref/jsref_parse.asp 这是不正确的,因为它返回数字而不是 NaN,例如2014-11-31 不存在。【参考方案2】:这样的事情应该可以工作:
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 );
【讨论】:
你能给我一个 jsFiddle 的例子吗? -我试过你的答案,但我自己无法让它工作=( 如果你仍然在使用 datepicker(你可能是),这似乎是一个比仅仅使用Date.parse
更好的验证器
如果出现错误“第 10 位缺少数字”或解析不起作用,请尝试 "mm/dd/yy"
而不是“mm/dd/yyyy”
我从未见过 jQuery 验证器投入使用。很酷。为你点赞。谢谢
我认为通过处理异常来验证日期不是一个好主意。 @James Hill 为此提供了更好的解决方案。【参考方案3】:
使用Date.parse()
方法检查日期是否有效:
var timestamp = Date.parse($("input[name='date']").val())
if (isNaN(timestamp) == false)
var d = new Date(timestamp);
【讨论】:
Date.parse
跨浏览器的实现不一致,我不会将其用作验证器。例如,整数 +-20,000 左右是有效的日期 (Date.parse("200000")
),但我不想接受它作为输入。
它既不验证日期是否有效,只检查日期是否在 1 到 31 之间,月份在 1 到 12 之间,等等。Date.parse('2000-11-31') == Date.parse('2000-12-01')
我会使用:if(isNaN(Date.parse($("input[name='date']").val())isNotDate,编写更少的代码应该是总体目标,至少对我来说是这样的。
@TGarrett,你不认为可读、可维护的代码应该是目标吗?
@jameshill,是的,先生,可读性是所有代码的一个大问题,并且让开发人员在您之后对您的代码进行更改,他们应该非常容易接受,无论此人处于何种编码级别。我所做的是清理了对我来说似乎多余的部分,例如当你可以简单地删除它并在其中添加任何逻辑运算符(例如“!”)时为布尔值设置一个相等运算符,对于大多数编程人员来说一段时间(1-2年),就能很快上手。不同的编码风格是另一个发生的讨论:以上是关于jQuery/JavaScript:是约会吗? (验证是不是是日期)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Jquery / JavaScript完全删除canvas元素?
我可以只使用 jQuery 验证还是需要 PHP? [关闭]
开始日期结束日期验证 -Jquery/javascript - kendoUI