在javascript中验证日期

时间:2012-02-16 15:13:47

标签: javascript asp.net

这是asp.net验证控件的客户端脚本函数。

<script type="text/javascript">
    function validateDateControl(sender, args) {

        var d = new Date(args.Value);

        args.IsValid = (Object.prototype.toString.call(d) === "[object Date]");

        if (!args.IsValid) {
            sender.innerText = "Client: Invalid date";
        }     

        return args.IsValid;
    }
</script>

Immediate Window Results:
d
NaN
Object.prototype.toString.call(d) === "[object Date]"
true

为什么比较评估为真?

2 个答案:

答案 0 :(得分:8)

因为new Date('as;dlas;ld,as;dl,as')仍然是Date个对象。

> var d = new Date('as;dlas;ld,as;dl,as')
  undefined
> d.toString()
  "Invalid Date"
> Object.prototype.toString.call(d)
  "[object Date]"

检查日期有效性的更好方法是看Date.getTime()不返回NaN

function validateDateControl(sender, args) {

    var d = new Date(args.Value);

    args.IsValid = !isNaN(d.getTime());

    if (!args.IsValid) {
        sender.innerText = "Client: Invalid date";
    }     

    return args.IsValid;
}

答案 1 :(得分:0)

因为它是Date类型的对象,但是值(对象本身的字符串表示中显示的内容,而不是类型)无效。