2012-02-16 8 views
0

これは、asp.net検証コントロールのクライアントスクリプト関数です。JavaScriptの日付を確認する

<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 

なぜ比較評価がTrueであるのですか?

+0

私はあなたの質問を理解できません。詳細を投稿してください。申し訳ありません:) – AngeloBad

+3

無効な日付はまだ日付オブジェクトですが、正しく表現できません。 –

答えて

8

new Date('as;dlas;ld,as;dl,as')は依然としてDateオブジェクトです。それはの文字列表現に示されているものDate型のオブジェクトが、値が(ですので

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; 
} 
0

> 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を返さないことを確認することですタイプではなくオブジェクト自体)が無効です。

関連する問題