zoukankan      html  css  js  c++  java
  • JS表单验证

    JavaScript 表单验证

    JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

    被 JavaScript 验证的这些典型的表单数据有:

    • 用户是否已填写表单中的必填项目?
    • 用户输入的邮件地址是否合法?
    • 用户是否已输入合法的日期?
    • 用户是否在数据域 (numeric field) 中输入了文本?

    JS表单验证包括:非空验证、相等验证、范围验证、正则验证

    1.非空验证

    <body>
    <form action="../../重要练习题/JS控制页面的几个例子/单击表格改变颜色.html" method="get">   <!--表单<form></form>这里method代表提交方式是隐藏还是显示-->
    <input type="text" name="abc" id="abc" />
    <br />
    <br />
    <input type="submit" value="提交" onclick="return check()" />   <!--在这里要注意,是先进行点击事件,然后根据点击事件的返回值来确定是否进行提交命令,如果返回值为true,它会进行提交,如果返回值为false,它会阻止提交-->
    </form>
    
    </body>
    <script type="text/javascript">
    
    function check(){
        var a = document.getElementById("abc");
        if(a.value==""){
            alert("用户名不能为空");
            return false;    
        }else{
            return true;
        }
    }

    当对话框中输入123时会进行提交,然后进行页面跳转

    当对话框为空时

    <body>
    <form action="../../重要练习题/JS控制页面的几个例子/单击表格改变颜色.html" method="get">  
    <input type="text" name="abc" id="abc" onblur="yanzheng()" />   <!--onblur,失去焦点时触发-->
    <span id="tishi"></span>
    <br />
    <br />
    <input type="submit" value="提交" onclick="return check()" /> 
    </form>
    
    </body>
    <script type="text/javascript">
    
    function check(){
        var a = document.getElementById("abc");
        if(a.value==""){
            alert("用户名不能为空");
            return false;
        }else{
            return true;
        }
    }
    
    
    function yanzheng(){
        var a = document.getElementById("abc");
        var b = document.getElementById("tishi");
        if(a.value==""){
            b.innerText = "用户名不能为空!";
            b.style.color = "red";
        }else{
            b.innerText = "用户名可以使用!";
            b.style.color = "blue";
        }
    }
    
    </script>

    2.相等验证

    <body>
    <input type="text" name="abc" id="abc" />
    <br />
    <br />
    <input type="text" name="def" id="def" onblur="xiangdeng()" />
    </body>
    <script type="text/javascript">
    
    function xiangdeng(){
        var a = document.getElementById("abc");
        var b = document.getElementById("def");
        
        if(a.value == b.value){
            alert("两次输入的信息一致");
        }else{
            alert("两次输入的信息不一致");
        }
    }

    3.范围验证

    <body>
    
    <input type="text" name="age" id="age" onblur="nianling()"/>
    
    </body>
    <script type="text/javascript">
    
    function nianling(){
        var a = document.getElementById("age");
        if(parseInt(a.value)>=18 && parseInt(a.value)<=25){
            alert("ok");
        }else{
            alert("超过年龄范围!")
        }
    }

    4.正则验证

    定界符:/^正则表达式$/
    匹配开头:^
    匹配结尾:$
    *代表前面的表达式可以出现N次,N>=0 (例如:a*)
    +代表前面的表达式至少出现一次,N>=1(例如:a+)
    ?代表前面的表达式最多出现一次 ,N<=1 (例如:a?)


    {n}代表前面的表达式确定出现n次 (例如:a{5}代表a必须出现5次)
    {n,}代表前面的表达式最少出现n次   (例如:a{5,}代表a最少出现5次,多了不限)

    {n,m}代表前面的表达式最少出现n次,最多出现m次 (例如:a{5,10}代表a最少出现5次,最多出现10次)
    x|y 代表匹配x或者y


    [abc]代表匹配abc里面的任意一个

    [^abc]代表匹配除了abc里面的任意一个

    [a-z]代表匹配所有的小写字母里面的任意一个

    [0-9]代表0-9之间的任意一个

    常见字符:
    d 代表任意一个数字字符,等价于[0-9]

    D 代表任意一个非数字字符,等价于[^0-9]

    代表一个换行符

    代表一个回车符

    s  代表任意一个不可见字符,包括空格,换页符等

    S 代表任意一个可见字符

    w 代表包括下划线的任意单词字符,等价于[A-Za-z0-9]

    例子:邮箱,必须包括@和.,123456@qq.com

    <body>
    
    <input type="text" name="email" id="email" onblur="youxiang()" />
    
    </body>
    <script type="text/javascript">
    
    function youxiang(){
        var e = document.getElementById("email");
        if(e.value.match(/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/)==null){  //e.value代表字符串,e.value.match()代表字符串的匹配,null是空的意思
            alert("邮箱格式不正确");
        }else{
            alert("邮箱格式正确");
        }
    }

    常用的正则表达式:

    手机号:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$

    15或者18位身份证号:^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$

    邮箱号:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$

  • 相关阅读:
    POJ 2559 Largest Rectangle in a Histogram(单调栈)
    POJ 1631 Bridging signals(最长上升子序列LIS)
    POJ 3977 Subset(二分+折半枚举)
    POJ 1742 Coins(dp多重背包)
    【洛谷P2622】关灯问题II【BFS】【状压】
    【洛谷P2622】关灯问题II【BFS】【状压】
    【洛谷P4281】紧急集合 / 聚会【LCA】
    【洛谷P4281】紧急集合 / 聚会【LCA】
    【洛谷P2420】让我们异或吧【DFS】
    【洛谷P2420】让我们异或吧【DFS】
  • 原文地址:https://www.cnblogs.com/sutao/p/7065979.html
Copyright © 2011-2022 走看看