这是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
为什么比较评估为真?
答案 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类型的对象,但是值(对象本身的字符串表示中显示的内容,而不是类型)无效。