4

谁能解释一下 foll JS 函数如何验证需要采用 mm/dd/yyyy 格式的日期。

<script type="text/javascript">

function checkdate(input){
    var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
    var returnval=false
    if (!validformat.test(input.value))
        alert("Invalid Date Format. Please correct and submit again.")
    else{ //Detailed check for valid date ranges
        var monthfield=input.value.split("/")[0]
        var dayfield=input.value.split("/")[1]
        var yearfield=input.value.split("/")[2]
        var dayobj = new Date(yearfield, monthfield-1, dayfield)
        if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
            alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
        else
            returnval=true
    }
    if (returnval==false) input.select()
        return returnval
}
</script>
4

1 回答 1

5

第一部分使用正则表达式检查值是否符合要求的格式mm/dd/yyyy。这是为了确保验证失败,如果它不是/分别具有 2、2 和 4 个数字的分隔字符串。

第二部分使用单个dd,mmyyyy值创建一个日期对象,并使用输入中的原始值检查创建的对象的属性。这是为了确保验证失败,例如02/31/2015

if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))

上面的语句是为了确保创建的对象反映了用于创建它的相同值。另外,请注意月份索引从 开始0,因此-1在创建+1期间和检查期间。

于 2012-11-29T11:05:02.547 回答