JavaScript中的表单验证、正则表达式、数组的使用

字符串的使用

在这里插入图片描述
字符串常用方法:
在这里插入图片描述

Substr(index,length):字符串截取方法,index表示从哪个索引位置开始截取,length表示截取多少个字符

为什么要使用表单验证

在登录、注册页面中经常会用到表单,用户可以输入相关信息,然后提交表单到服务器处理,但是在用户输入的信息中往往会有一些不符合要求,这时候这些无意义的数据提交给服务器只是增加服务器的压力,所以我们引入表单基本验证,使用JavaScript验证用户输入的信息,如果不符合要求就不提交,只有输入的信息正确时才将表单提交给服务器处理。

表单验证的常用步骤

1、创建一个函数
2、在函数中对表单数据进行验证
3、如果数据验证都成功,函数返回true,否则返回false
4、表单中加上onsubmit事件,例如:οnsubmit=“return check()” 其中check就是函数名

提交表单的2种方式

1、点击type=”submit”的按钮可以提交表单(该提交方式会触发表单的onsubmit事件),例如:

2、在JavaScript代码中调用表单的submit()方法也可以提交表单(该提交方式不会触发表单的onsubmit事件),例如:
document.表单名称.submit(); 或 document.getElementById(“表单id”).submit();

注册表单验证:

<script type="text/javascript">
        /*需求:
            邮箱:不能为空、必须包含@、必须包含. 最后一个.必须在@符号后面并且中间要有字符   a.bc@qq.com
            密码:不能为空、必须大于等于6位
            确认密码:二次密码要一致
            姓名:不能为空、不能包含数字    张三123  charAt(i)
         */
        //验证邮箱
        function checkEmail(){
            var email = document.getElementById("email").value;//获取邮箱文本框中的字符串
            if(email.length == 0){
                alert("email不能为空!");
                return false;
            }else if(email.indexOf("@")<0){
                alert("email中必须包含@符号!");
                return false;
            }else if(email.indexOf(".")<0){
                alert("email中必须包含.符号!");
                return false;
            }else if(email.lastIndexOf(".")-email.indexOf("@")<=1){
                alert("最后一个.必须在@符号后面并且中间要有字符");
                return false;
            }
            return true;
        }
        //验证密码
        function checkPwd(){
            var pwd = document.getElementById("pwd").value;//获取密码文本框的值
            if(pwd.length == 0){
                alert("密码不能为空!");
                return false;
            }else if(pwd.length<6){
                alert("密码必须大于等于6位!");
                return false;
            }
            return true;
        }
        //验证确认密码
        function checkConfirmPwd(){
            var pwd = document.getElementById("pwd").value;//密码
            var confirmPwd = document.getElementById("repwd").value;//确认密码
            if(pwd!=confirmPwd){
                alert("二次输入密码不一致!");
                return false;
            }
            return true;
        }
        //验证姓名
        function checkName(){
            var name = document.getElementById("user").value;//获取姓名文本框中的值
            if(name.length == 0){
                alert("姓名不能为空!");
                return false;
            }else{
                for(var i=0;i<name.length;i++){
                    var s = name.charAt(i);
                    if(!isNaN(s)){
                        alert("用户名不能包含数字!");
                        return false;
                    }
                }
            }
            return true;
        }
        //表单验证函数
        function checkForm(){
            if(checkEmail()&&checkPwd()&&checkConfirmPwd()&&checkName()){
                return true;
            }else{
                return false;
            }
        }

    </script>

文本框对象

在这里插入图片描述
制作文本框输入验证提示信息:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
    <title>休闲网注册页面</title>
    <link href="login.css" rel="stylesheet" type="text/css">
    <script type="text/javascript">
        //验证邮箱
        function checkEmail(){
            var email = document.getElementById("email").value;//获取邮箱文本框中的字符串
            if(email.length == 0){
                document.getElementById("DivEmail").innerHTML = "email不能为空!";
                document.getElementById("email").style.borderColor = "red";
                return false;
            }else if(email.indexOf("@")<0){
                document.getElementById("DivEmail").innerHTML = "email中必须包含@符号!";
                document.getElementById("email").style.borderColor = "red";
                return false;
            }else if(email.indexOf(".")<0){
                document.getElementById("DivEmail").innerHTML = "email中必须包含.符号!";
                document.getElementById("email").style.borderColor = "red";
                return false;
            }else if(email.lastIndexOf(".")-email.indexOf("@")<=1){
                document.getElementById("DivEmail").innerHTML = "最后一个.必须在@符号后面并且中间要有字符!";
                document.getElementById("email").style.borderColor = "red";
                return false;
            }
            document.getElementById("DivEmail").innerHTML = "";
            document.getElementById("email").style.borderColor = "";
            return true;
        }
        //验证密码
        function checkPwd(){
            var pwd = document.getElementById("pwd").value;//获取密码文本框的值
            if(pwd.length == 0){
                document.getElementById("DivPwd").innerHTML = "密码不能为空!";
                document.getElementById("pwd").style.borderColor="red";
                return false;
            }else if(pwd.length<6){
                document.getElementById("DivPwd").innerHTML = "密码必须大于等于6位!";
                document.getElementById("pwd").style.borderColor="red";
                return false;
            }
            document.getElementById("DivPwd").innerHTML = "";
            document.getElementById("pwd").style.borderColor="";
            return true;
        }
        //验证确认密码
        function checkConfirmPwd(){
            var pwd = document.getElementById("pwd").value;//密码
            var confirmPwd = document.getElementById("repwd").value;//确认密码
            if(pwd!=confirmPwd){
                document.getElementById("DivRepwd").innerHTML="二次输入密码不一致!";
                document.getElementById("DivRepwd").style.borderColor = "red";
                return false;
            }
            document.getElementById("DivRepwd").innerHTML="";
            document.getElementById("DivRepwd").style.borderColor = "";
            return true;
        }
        //验证姓名
        function checkName(){
            var name = document.getElementById("user").value;//获取姓名文本框中的值
            if(name.length == 0){
                document.getElementById("DivUser").innerHTML = "姓名不能为空!";
                document.getElementById("user").style.borderColor = "red";
                return false;
            }else{
                for(var i=0;i<name.length;i++){
                    var s = name.charAt(i);
                    if(!isNaN(s)){
                        document.getElementById("DivUser").innerHTML = "用户名不能包含数字!";
                        document.getElementById("user").style.borderColor = "red";
                        return false;
                    }
                }
            }
            document.getElementById("DivUser").innerHTML = "";
            document.getElementById("user").style.borderColor = "";
            return true;
        }
        //表单验证函数
        function checkForm(){
            //&&(短路与)   &(逻辑与)
            if(checkEmail()&checkPwd()&checkConfirmPwd()&checkName()){
                return true;
            }else{
                return false;
            }
        }
    </script>
</head>

<body>
<div id="header" class="main">
    <div id="headerLeft"><img src="images/logo.gif"/></div>
    <div id="headerRight">注册 | 登录 | 帮助</div>
</div>
<div class="main">
    <table id="center" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td class="bold" colspan="2">注册休闲网</td>
        </tr>
        <form action="success.html" method="post" name="myform" onsubmit="return checkForm()">
            <tr>
                <td class="left">您的Email:</td>
                <td><input id="email" type="text" class="inputs" onblur="checkEmail()"/>

                    <div class="red" id="DivEmail"></div>
                </td>
            </tr>
            <tr>
                <td class="left">输入密码:</td>
                <td><input id="pwd" type="password" class="inputs" onblur="checkPwd()"/>

                    <div class="red" id="DivPwd"></div>
                </td>
            </tr>
            <tr>
                <td class="left">再输入一遍密码:</td>
                <td><input id="repwd" type="password" class="inputs" onblur="checkConfirmPwd()"/>

                    <div class="red" id="DivRepwd"></div>
                </td>
            </tr>
            <tr>
                <td class="left">您的姓名:</td>
                <td><input id="user" type="text" class="inputs" onblur="checkName()"/>

                    <div class="red" id="DivUser"></div>
                </td>
            </tr>
            <tr>
                <td class="left">性别:</td>
                <td><input name="sex" type="radio" value="1"/><input name="sex" type="radio" value="0"/></td>
            </tr>
            <tr>
                <td class="left">出生日期:</td>
                <td><select name="year">
                    <script type="text/javascript">
                        for (var i = 1900; i <= 2009; i++) {
                            document.write("<option value=" + i + ">" + i + "</option>");
                        }
                    </script>
                </select><select name="month">
                        <script type="text/javascript">
                            for (var i = 1; i <= 12; i++) {
                                document.write("<option value=" + i + ">" + i + "</option>");
                            }
                        </script>
                    </select><select name="day">
                        <script type="text/javascript">
                            for (var i = 1; i <= 31; i++) {
                                document.write("<option value=" + i + ">" + i + "</option>");
                            }
                        </script>
                    </select></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><input name="btn" type="submit" value="注册" class="rb1"/></td>
            </tr>
        </form>
    </table>

</div>
<div id="footer" class="main"><a href="#">关于我们</a> | <a href="#">诚聘英才</a> |<a href="#"> 联系方式</a> | <a href="#">帮助中心</a>
</div>
</body>
</html>

为什么要使用正则表达式

平时验证一个字符串的是否符合要求(例如:email格式的验证),我们需要写很多代码来验证,但是如果使用正则表达式来验证,可以使代码变得非常简洁。

关于正则表达式的语法可以参考我的另一篇博客正则表达式语法
下面介绍正则表达式的使用方法:

正则表达式的两种创建方法

方法一:构造函数
在这里插入图片描述

方法二:普通方法,又称perl风格(用的比较多
在这里插入图片描述

注意:常用的附加参数有g和i,g代表可以进行全局匹配,i代表不区分大小写

正则表达式的模式

简单模式:是指通过普通字符的组合来表达的模式,例如:
在这里插入图片描述
简单模式只能表示具体的匹配,如果要匹配一个邮箱或者电话号码,就不能使用具体的匹配,这就要用到复合模式。

复合模式:复合模式是指含有通配符来表达的模式,例如:
在这里插入图片描述

正则表达式常用的方法

1、test:判断字符串中是否匹配正则表达式,返回一个boolean值
2、exec:每调用一次可以获取一个匹配的字符,并确定其位置(lastIndex)

<script type="text/javascript">
        //验证字符串是否包含abc
        /*var reg = /abc/;//创建正则表达式
        var str = "sdfsdfabcdfdf";
        var result = reg.test(str);
        document.write(result);*/

        //验证是否包含abc,忽略大小写
        /*var reg = /abc/i;//创建正则表达式   i表示忽略大小写
        var str = "sdfsdfaBcdfdf";
        var result = reg.test(str);
        document.write(result);*/

        //验证是否以abc开头
        /*var reg = /^abc/;//创建正则表达式   ^表示开头
        var str = "abcdfdf";
        var result = reg.test(str);
        document.write(result);*/

        //验证是否以abc结尾
        /*var reg = /abc$/i;//创建正则表达式   $表示结尾
        var str = "sdfsdfabc";
        var result = reg.test(str);
        document.write(result);*/

        //exec()方法的使用
        var reg = /a/g;  //g表示全局匹配
        var str = "dsadfadaffd";
        var result = reg.exec(str);
        //lastIndex用于获取下次匹配的开始索引(注意:附件参数要用g,否则lastIndex持续为0)
        document.write(result+"-"+reg.lastIndex);
        result = reg.exec(str);
        document.write(result+"-"+reg.lastIndex);

    </script>

正则表达式验证邮编和电话号码:

<script type="text/javascript">
        //验证邮编
        var reg = /^[0-9]{6}$/;
        var str = "515006";
        document.write(reg.test(str));

        //验证电话号码
        var reg2 = /^1\d{10}$/;
        var str2 = "13522823123";
        document.write(reg2.test(str2))
    </script>

正则表达式验证邮箱:

<script type="text/javascript">
        //验证邮箱  ****@**.com cn
        var reg = /^\w+@\w+.[a-z]{2,3}$/;
        var email = "zhangsan@163.cn";
        document.write(reg.test(email));
    </script>

下拉列表框常用事件、方法和属性

在这里插入图片描述
下拉列表框的使用:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        function addOption(){
            var op = new Option("广东","gd");//参数一:显示的文本   参数二:值
            var sel = document.getElementById("selPro");//获取下拉列表框
            sel.options.add(op);//将创建的选项添加到下拉列表框中
        }

        function showOption(){
            var sel = document.getElementById("selPro");//获取下拉列表框
            var v = sel.value;//获取选中的值
            var index = sel.selectedIndex;//获取选中项的缩影
            alert(v+"-"+index);
        }
    </script>
</head>
<body>
<select id="selPro" onchange="showOption()">
    <option value="hn">湖南</option>
    <option value="hb">湖北</option>
</select>
<input type="button" value="添加一个option" onclick="addOption()" />
</body>
</html>

数组的使用

创建数组:
var 数组名称 = new Array(数组长度);
注意:数组长度可以不写

给数组赋值:(有多种方法)
方法一:
在这里插入图片描述

方法二:
在这里插入图片描述

方法三:
在这里插入图片描述

遍历数组:
方法一:普通循环
在这里插入图片描述
方法二:增强型for循环
在这里插入图片描述

注意:遍历出来的v是索引

数组的常用属性和方法
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        var arr = new Array();
        arr[0] = "张三";
        arr[1] = 23;
        arr["one"] = 25.6;
        document.write(arr[1]+"<br>");
        document.write(arr["one"]+"<br>");

        document.write("================数组遍历===============<br>");
        //数组循环(方法一:普通循环)
        for(var i=0;i<arr.length;i++){
            document.write(arr[i]+"<br>");
        }
        //数组循环(方法二:增强型for循环  注意:遍历出来的不是元素,而是下标)
        for(var i in arr){
            document.write(arr[i]+"<br>");
        }


        var arr2 = new Array();
        arr2["hn"] = ["长沙","株洲","湘潭"];
        document.write(arr2["hn"][1]);
    </script>
</head>
<body>

</body>
</html>

省市级联:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        var arr = new Array();
        arr["hn"] = ["长沙","株洲","湘潭"];
        arr["gd"] = ["广州","深圳","东莞"];

        function addCity(){
            //获取选中省份的值
            var pro = document.getElementById("selPro").value;
            var citys = arr[pro];
            //先清空城市下拉列表的选项
            document.getElementById("selCity").length = 0;
            for(var i=0;i<citys.length;i++){
                var c = citys[i];
                var op = new Option(c,c);
                document.getElementById("selCity").options.add(op);
            }
        }

        window.onload = addCity;
    </script>
</head>
<body>
    省份:<select id="selPro" onchange="addCity()">
        <option value="hn">湖南</option>
        <option value="gd">广东</option>
    </select><br>
    城市:<select id="selCity">

    </select>
</body>
</html>

最后附上项目代码地址:https://github.com/MandarinOrange/form_reg_arr/tree/master

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值