练习已完成,老师帮忙看一下有没有错误的地方

来源:4-8 编程练习

为爱修行

2019-03-13 22:08:54

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    * {
        padding: 0;
        margin: 0;
    }

    body {
        min-width: 1000px;
        font-family: "宋体";
    }

    .container {
        margin: 0 auto;
        width: 1000px;
    }

    .caption {
        height: 50px;
        line-height: 50px;
        padding: 0 10px;
        background: lightblue;
        color: #fff;
    }

    .content {
        background: #eee;
        padding: 50px 0 0 200px;
    }

    .content .item {
        width: 90%;
        height: 25px;
        line-height: 25px;
        font-size: 18px;
        position: relative;
    }

    .content .item label {
        display: inline-block;
        width: 120px;
        text-align: right;
    }

    .content .item input,
    .content .item select {
        width: 210px;
        height: 21px;
    }

    .content .item .item_ {
        font-size: 14px;
    }

    .content #handup {
        width: 80px;
        height: 40px;
        margin: 50px 0 50px 180px;
        background: lightblue;
        color: #fff;
        outline: none;
        border: none;
        cursor: pointer;
        border-radius: 10px;
        font-size: 18px;
    }
    </style>
</head>

<body>
    <div class="container">
        <div class="caption">用户注册</div>
        <div class="content">
            <div class="item">
                <label for="userAccount">用户名:</label>
                <input class="input" type="text" id="userAccount" placeholder=" 用户设置成功后不可修改">
                <span class="item_"></span>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="userPass">登陆密码:</label>
                <input class="input" type="password" id="userPass" placeholder=" 6-18位字母,数字或符号">
                <span class="item_"></span>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="userPass_">确认密码:</label>
                <input class="input" type="password" id="userPass_">
                <span class="item_"></span>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="userName">姓名:</label>
                <input class="input" type="text" id="userName" placeholder=" 请输入姓名">
                <span class="item_"></span>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="sex">性别:</label>
                <select id="sex">
                    <option value="male">男</option>
                    <option value="female">女</option>
                </select>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="information">身份证号:</label>
                <input class="input" type="text" id="information" placeholder=" 请输入身份证号">
                <span class="item_"></span>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="email">邮箱:</label>
                <input class="input" type="email" id="email" placeholder=" 请输入正确邮箱格式">
                <span class="item_"></span>
            </div>
            <br>
            <!--_____________________________________________________________________________________________-->
            <div class="item">
                <label for="telephone">手机号码:</label>
                <input class="input" type="tel" id="telephone" placeholder=" 请输入您的手机号码">
                <span class="item_"></span>
            </div>
            <br>
            <!--__________________________________________________________________________________________________-->
            <div id="end">
                <button id="handup">提交</button>
            </div>
        </div>
    </div>
</body>

</html>
<script type="text/javascript">
var userAccount = document.getElementById("userAccount");
var userPass = document.getElementById("userPass");
var userPass_ = document.getElementById("userPass_");
var userName = document.getElementById("userName");
var information = document.getElementById("information");
var email = document.getElementById("email");
var telephone = document.getElementById("telephone");
var handup = document.getElementById("handup");
var input = document.getElementsByClassName("input");


//当鼠标离开用户名输入框,产生验证
var test = [false, false, false, false, false, false, false];

var items = document.querySelectorAll(".item_"); //获取所有提示元素的下标

var reg = /正则/;

var submit = false;

userAccount.onblur = function() { //验证用户名
    var reg = /^\w{6,20}$/;
    if (!reg.exec(this.value)) {
        items[0].innerHTML = "请输入6--20位数字、字母、'_',字母开头";
        items[0].style.color = "red";
    } else {
        items[0].innerHTML = "OK";
        items[0].style.color = "green";
        test[0] = true;
    }
}

userPass.onblur = function() {
    var reg = /^\S{6,18}$/;
    if (!reg.exec(this.value)) {
        items[1].innerHTML = "6-18位,包括数字字母或符号,中间不能有空格";
        items[1].style.color = "red";
    } else {
        items[1].innerHTML = "OK";
        items[1].style.color = "green";
        test[1] = true;
    }

}

userPass_.onblur = function() {
    if (this.value != userPass.value || this.value == "") {
        items[2].innerHTML = "两次输入密码不一致";
        items[2].style.color = "red";
    } else {
        items[2].innerHTML = "OK";
        items[2].style.color = "green";
        test[2] = true;
    }

}

userName.onblur = function() {
    var reg = /^[\u4e00-\u9fa5]{2,4}$/;
    if (!reg.exec(this.value)) {
        items[3].innerHTML = "真实姓名,两位到四位的中文汉字";
        items[3].style.color = "red";
    } else {
        items[3].innerHTML = "OK";
        items[3].style.color = "green";
        test[3] = true;
    }

}

information.onblur = function() {
    var reg = /^\d{14}[0-9x]$|^\d{17}[0-9x]$/;
    if (!reg.exec(this.value)) {
        items[4].innerHTML = "要求15位或者18位的数字,18位时最后一位可能是x";
        items[4].style.color = "red";
    } else {
        items[4].innerHTML = "OK";
        items[4].style.color = "green";
        test[4] = true;
    }
}

email.onblur = function() {
    var reg = /^\w+@\w+\.[a-zA-Z_]+\.?[a-zA-Z_]+$/;
    if (!reg.exec(this.value)) {
        items[5].innerHTML = "邮箱格式不对";
        items[5].style.color = "red";
    } else {
        items[5].innerHTML = "OK";
        items[5].style.color = "green";
        test[5] = true;
    }

}

telephone.onblur = function() {
    var reg = /^\d{11}$/;
    if (!reg.exec(this.value)) {
        items[6].innerHTML = "手机号码格式不对";
        items[6].style.color = "red";
    } else {
        items[6].innerHTML = "OK";
        items[6].style.color = "green";
        test[6] = true;
    }

}

//注册的时候,必须前面所有数据都是正确的 才能提交
handup.onclick = function() {
    submit = false;
    for (var i = 0; i < input.length; i++) {
        test[i] = false;
        input[i].onblur();
    }
    for (var i = 0; i < test.length; i++) {
        if (test[i] == false) {
            break;
        } else if (i == test.length - 1) {
            submit = true;
        }
    }

    if (submit == true) {
        alert("确认提交");
        console.log(test);
    } else {
        alert("你填写的信息有误!");
        console.log(test);
    }
}
</script>


写回答

1回答

好帮手慕星星

2019-03-14

你好,测试了代码整体效果还是不错的。

1、用户名正则验证与提示信息不相符:

http://img.mukewang.com/climg/5c89b398000130e010170193.jpg

可以修改为:

http://img.mukewang.com/climg/5c89b489000128a903220033.jpg

2、手机号码的验证可以更具体一些,例如:

http://img.mukewang.com/climg/5c89b4ac00011fde12580033.jpg

自己可以重新测试下,祝学习愉快 !

0

0 学习 · 4826 问题

查看课程