zoukankan      html  css  js  c++  java
  • 验证日期输入格式

    要确保用户输入日期的有效性,首先要验证用户输入的日期是否合法,以此来有效提高程序的执行速度,在这个例子中文本框输入“2017-02-29”,单击“提交”按钮后,将实现验证日期

    需要注意一下几点:

    1.首先需要从输入的字符串中提取出年份,月份和日;并判断输入的年份,月份和日份是否大于0的数字,然后将月份和日中小于10的数字格式化为长度为2的字符串(在其前面填充0)。

    2.将提取并格式化后的年份,月份和日重新组合,使其组合为“YYYY-MM-DD”格式的字符串,并判断新组合的字符串长度是否为10.

    3.判断输入年份是否为闰年,从而判断2月份的天数(判断输入的年份是否为闰年,从而判断2月份的天数)。

    4.根据1,3,5,7,8,10,12月份为31天,其他月份为30天的原则,判断除2月份以外的月份的天数是否正确。

    5.判断月份是否大于12

    其中还应用了正则表达式来判断日期的基本格式,正则表达式语法如下:/(d{4}-)(d{2}-)(d{2})$/;

    应用JavaScript编写验证码输入的日期格式是否正确的checkdata()代码如下:

    <script>
    // 判断输入的日期是否正确
    function checkdata(data){
        if(data==""){
            return true;
        }
        subYY=data.substr(0,4)
        if(isNaN(subYY)||subYY<=0){
            return true;
        }
    // 转换月份
    if(data.indexOf('-',0)!=-1){
        separate="-"
    }else{
        return true;
    }
    area=data.indexOf(separate,0)
    subMM=data.substr(area+1,data.indexOf(separate,area+1)-(area+1))
    if(isNaN(subMM)||subMM<=0){
        return true;
    }
    if(subMM.length<2){
        subMM="0"+subMM
    }
    // 转换日
    area=data.lastIndexOf(separate)
    subDD=data.substr(area+1,data.length-area-1)
    if(isNaN(subDD)||subDD<=0){
        return true;
    }
    if(eval(subDD<10)){
        subDD="0"+eval(subDD)
    }
    NewDate=subYY+"-"+subMM+"-"+subDD
    // alert(NewDate);
    if(NewDate.length!=10){
        return true;
    }
    if(NewDate.substr(4,1)!="-"){
        return true;
    }
    if(NewDate.substr(7,1)!="-"){
        return true;
    }
    var MM=NewDate.substr(5,2);
    var DD=NewDate.substr(8,2);
    if((subYY%4==0&&subYY%100!=0)||subYY%400==0){//判断是否为闰年
        if(parseInt(MM)==2){//闰年的二月份
            if(DD>29){
                return true;
            }
        }
        }else{
            if(parseInt(MM)==2){//非闰年的二月份
                if(DD>28){
                    return true;
                }
            }
        }
        var mm=new Array(4,6,9,11);//判断每月中最大天数是30或者31
        for(i=0;i<mm.length;i++){
            if(parseInt(MM)==mm[i]){
                if(parseInt(DD)>30){
                    return true;
                }
            }else{
                if(parseInt(DD)>31){
                      return true;
                    }
                }
            }if(parseInt(MM)>12){
                return true;
            }
        return false;
    }
    

    应用JavaScript脚本编写一个checkdata函数,并通过正则表达式验证用户输入的日期格式是否正确

    function checkdata1(data){
        var str=data;
        // 在JavaScript中正则表达式只能通过使用"/"开头和结束,不能使用双引号
        // 匹配字符串中的指定位数,(d{2}$表明以两个数字结尾
        var expression=/(d{4}-)(d{2}-)(d{2})$/;
        var objExp=new RegExp(expression);
        if(objExp.test(str)==true){
            return true;
        }else{
            return false;
        }
    }
    

    编写自定义的JavaScript函数check(),用于在提交表单前判断用户输入是否合法,在该函数中再调用checkdata()和checkdata1,判断输入的日期是否正确,如果不正确则给予提示,否则提交表单。

    function check(){
        if(form.data.value==""){
            alert("请输入正确的日期");
            form.data.focus();return false;
        }
        if(!checkdata1(form.data.value)||form.data.value.length!=10){
            alert("你输入的基本格式不对");
            form.data.focus();return false;
        }
        if(checkdata(form.data.value)){        
            alert("你输入的日期不正确(如:1920-07-17)
     请注意闰年!");
            form.data.focus();
            return false;
        }
    }
    </script>
    

    最后是输入框

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <form action="" name="form"  onsubmit="return check()">
            <input type="text" name="data">
            <input type="submit" name="submit" value="提交">
            <input type="reset" name="reset" value="重置">
        </form>
    </body>
    </html>
    
  • 相关阅读:
    链表
    线程池 ------ linux C实现
    thymeleaf 标签使用方法
    thymeleaf的配置
    exception processing, template error resolving template
    Thymeleaf模板表达式
    Mybatis:使用bean传值,当传入值为Null时,提示“无效的列类型”的解决办法
    windows 查看端口
    session与cookie的区别
    substr与substring的区别
  • 原文地址:https://www.cnblogs.com/aten/p/8995695.html
Copyright © 2011-2022 走看看