1.我的IMOOC下拉列表和姓名填写规则,鼠标移出后没来得及移入列表就消失 2.密码强度验证

来源:3-10 作业题

天青色烟雨蒙

2019-06-20 22:18:04

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/index.css"/>
</head>
<body>
    <div class="wrap">
        <!-- 头部-->
 <header class="header">
            <div class="header_wrap w">
                <!-- logo-->
 <div class="logo">
                    <div class="logo_image"></div>
                    <h3>慕课高铁客户服务中心</h3><span>|</span><p>客户服务</p>
                </div>
                <!-- nav导航-->
 <div class="nav">
                    <a href="javascript:;">意见反馈</a>
                    <a href="javascript:;">imooc@com</a>
                    <a href="javascript:;">您好,请 <span>登录</span></a>
                    <span>|</span>
                    <a href="javascript:;">注册</a>
                    <a href="javascript:;" class="myImooc">我的IMOOC</a>
                    <div class="list">
                        <ul>
                            <li><a href="javascript:;">未完成订单</a></li>
                            <li><a href="javascript:;">已完成订单(改/退)</a></li>
                            <li><a href="javascript:;">我的保险</a></li>
                            <li><a href="javascript:;">查看个人信息</a></li>
                            <li><a href="javascript:;">账户安全</a></li>
                            <li><a href="javascript:;">常用联系人</a></li>
                            <li><a href="javascript:;">重点旅客预约</a></li>
                            <li><a href="javascript:;">遗失物品查找</a></li>
                            <li><a href="javascript:;">服务查询</a></li>
                            <li><a href="javascript:;">投诉</a></li>
                            <li><a href="javascript:;">建议</a></li>
                        </ul>
                    </div>
                    <span class="sanjiao_down"></span>
                    <a href="javascript:;">
                        <span class="img"></span>
                        手机版
                    </a>
                </div>
            </div>
        </header>
        <!-- 主体-->
 <section class="section w">
            <div class="title">您现在的位置 : <span>客运首页</span> <span> ></span> <span>注册</span></div>
            <div class="form">
                <div class="top">账户信息</div>
                <table class="userInfo">
                    <tr>
                        <td>*</td>
                        <td>用户名:</td>
                        <td><input type="text" class="username" placeholder="用户名设置成功后不可修改"/></td>
                        <td><span class="usernameErr"></span></td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>登录密码:</td>
                        <td><input type="password" class="upwd" placeholder="6-20位字母、数字或符号"/></td>
                        <td>
                            <div class="red"></div>
                            <div class="orange"></div>
                            <div class="green"></div>
                        </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td></td>
                        <td><span class="upwdErr"></span></td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>确认密码:</td>
                        <td><input type="password" class="repwd" placeholder="再次输入您的登录密码"/></td>
                        <td><span class="repwdErr"></span></td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>姓名:</td>
                        <td><input type="text" class="realName" placeholder="请输入姓名"/></td>
                        <td>
                            <span class="realNameErr">
                                <a href="javascript:;" class="realName_rule">姓名填写规则</a>
                                <a href="javascript:;" class="realName_text"></a>
                            </span>
                        </td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>证件类型:</td>
                        <td>
                            <select name="docType">
                                <option value="idNumber">二代身份证</option>
                                <option value="hongKong">港澳通行证</option>
                                <option value="taiWan">台湾通行证</option>
                                <option value="passport">护照</option>
                            </select>
                        </td>
                        <td><span class="docTypeErr"></span></td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>证件号码:</td>
                        <td><input type="text" class="docNum" placeholder="请输入您的证件号码"/></td>
                        <td><span class="docNumErr"></span></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>邮箱:</td>
                        <td><input type="text" class="email" placeholder="请正确填写邮箱地址"/></td>
                        <td><span class="emailErr"></span></td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>手机号码:</td>
                        <td><input type="text" class="phone" placeholder="请输入您的手机号码"/></td>
                        <td><span class="phoneErr"></span></td>
                    </tr>
                    <tr>
                        <td>*</td>
                        <td>旅客类型:</td>
                        <td>
                            <select name="PassengerType">
                                <option value="adult">成人</option>
                                <option value="children">儿童</option>
                                <option value="student">学生</option>
                                <option value="army">残疾军人</option>
                                <option value="police">伤残人民警察</option>
                            </select>
                        </td>
                        <td></td>
                    </tr>
                    <tr class="check">
                        <td></td>
                        <td></td>
                        <td style="color: #000">
                            <input type="checkbox"/>我已阅读并同意遵守
                        </td>
                        <td><span style="color: #006ee1">《中国铁路客户服务中心网站服务条款》</span></td>
                    </tr>
                </table>
                <input type="submit" class="submitBtn" value="下一步"/>
            </div>
        </section>
        <!-- 尾部-->
 <footer class="footer">
            <div class="text">
                <p>关于我们 <span>|</span> 网站声明</p>
                <p>Copyright &copy; 2017 imooc.com All Rights Reseverd | 京ICP备 13046642号-2</p>
            </div>
        </footer>
    </div>
    <script src="js/index.js"></script>
</body>
</html>

============================================================================================

/*通用样式*/
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

a {
    text-decoration: none;
    color: #000;
}

ul, li {
    list-style: none;
}

/*版心*/
.w {
    width: 1000px;
    margin: 0 auto;
}

.wrap {
    width: 100%;
}

/*头部*/
.header {
    height: 125px;
    border-bottom: 2px solid #2487c9;
    background-color: #efefef;
}

.header_wrap {
    position: relative;
}

.logo {
    float: left;
}

.logo_image, .logo h3, .logo span, .logo p {
    float: left;
    line-height: 125px;
    margin: 0 5px;
}

.logo_image {
    width: 110px;
    height: 110px;
    background: url("../img/logo.png");
}

.logo h3 {
    font-weight: 400;
    font-size: 20px;
}

.logo span {
    font-weight: 700;
    font-size: 24px;
}

.logo p {
    color: #666666;
    font-size: 16px;
}

.nav {
    float: left;
    line-height: 125px;
    position: absolute;
    right: 0;
    top: 0;
}

.nav a {
    margin: 0 5px;
    font-size: 14px;
}

.sanjiao_down {
    width: 0;
    height: 0;
    overflow: hidden;
    font-size: 0; /*是因为, 虽然宽高度为0, 但在IE6下会具有默认的 */
    line-height: 0; /* 字体大小和行高, 导致盒子呈现被撑开的长矩形 */
    border-width: 10px;
    border-style: solid dashed dashed dashed; /*IE6下, 设置余下三条边的border-style为dashed,即可达到透明的效果*/
    border-color: #000 transparent transparent transparent;
}

/*.nav a:last-child {*/
/*margin-left: 45px;*/
/*}*/

.nav a:last-child span {
    display: inline-block;
    width: 15px;
    height: 25px;
    background: url("../img/img1.png");
    background-size: 100% 100%;
    vertical-align: middle;
}

.nav a:nth-child(2),
.nav a:nth-child(3) span {
    color: #fa7403;
}

.nav a:nth-child(6) {
    position: relative;
    /*color: red;*/
}

.list {
    width: 170px;
    height: 350px;
    border: 1px solid #fa7403;
    position: absolute;
    top: 85px;
    left: 330px;
    background-color: #FCFCFC;
    padding: 12px;
    z-index: 99;
    /*display: none;*/
}

.list li {
    height: 30px;
    line-height: 30px;
}

.list li:nth-child(3),
.list li:nth-child(6),
.list li:nth-child(9) {
    border-bottom: 1px dotted #ddd;
    border-top: 1px dotted #ddd;
}

/*主体*/
.title {
    margin: 10px 0;
}

.title span {
    color: #636363;
}

.form {
    height: 630px;
    border: 1px solid #fb7403;
    border-radius: 10px;
    position: relative;
}

.top {
    height: 45px;
    background-color: #fb7403;
    color: #fff;
    line-height: 45px;
    padding-left: 15px;
    border: 1px solid #fb7403;
    border-radius: 10px 10px 0 0;
}

.userInfo {
    margin: 50px auto;
    border-spacing: 15px;
    text-align-last: justify;
}

.userInfo tr td:first-child {
    color: red;
}

.userInfo tr td:nth-child(2) {
    width: 100px;
}

.userInfo tr td:nth-child(3) {
    width: 185px;
}

.userInfo tr td:nth-child(3) input,
.userInfo tr td:nth-child(3) select {
    padding: 3px 6px;
}

.userInfo tr td:last-child {
    color: #fb7403;
}

.userInfo tr:nth-child(2) td:last-child div {
    width: 50px;
    height: 10px;
    float: left;
    margin-right: 5px;
    display: none;
}

.userInfo tr:nth-child(2) td:last-child div.red {
    background-color: red;
}

.userInfo tr:nth-child(2) td:last-child div.orange {
    background-color: orange;
}

.userInfo tr:nth-child(2) td:last-child div.green {
    background-color: green;
}

.userInfo .realName_rule {
    text-decoration: underline;
    color: red;
    position: relative;
}

.userInfo .realName_text {
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -30px;
    margin-left: 120px;
    display: block;
    width: 502px;
    height: 282px;
    z-index: 99;
    background: url("../img/text.jpg");
    display: none;
}

.submitBtn {
    width: 235px;
    height: 40px;
    background-color: #fb7403;
    border-radius: 5px;
    color: #fff;
    line-height: 40px;
    text-align: center;
    border: 0;
    outline: 0;
    position: absolute;
    left: 50%;
    margin-left: -117.5px;
    bottom: 25px;
    cursor: pointer;
}

.submitBtn:hover {
    background-color: #fff;
    color: #fb7403;
    border: 1px solid #fb7403;
}

/*页脚*/
.footer {
    height: 105px;
    background-color: #dcdcdc;
    border-top: 2px solid #2487c9;
    margin-top: 125px;
    text-align: center;
    position: relative;
}

.footer .text {
    width: 600px;
    height: 50px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -35px;
    margin-left: -300px;
}

.footer p {
    line-height: 35px;
    color: #999999;
}

===========================================================================================

/**
 * Created by Lily on 2019/6/19.
 */
var myImooc = document.querySelector('.myImooc');
var list = document.querySelector('.nav .list');

var username = document.querySelector('.username');
var upwd = document.querySelector('.upwd');
var repwd = document.querySelector('.repwd');
var realName = document.querySelector('.realName');
var docNum = document.querySelector('.docNum');
var email = document.querySelector('.email');
var phone = document.querySelector('.phone');
var submitBtn=document.querySelector('.submitBtn');
var realName_rule=document.querySelector('.realName_rule');
var realName_text=document.querySelector('.realName_text');

var usernameErr = document.querySelector('.usernameErr');
var upwdErr = document.querySelector('.upwdErr');
var red = document.querySelector('.red');
var orange = document.querySelector('.orange');
var green = document.querySelector('.green');
var repwdErr = document.querySelector('.repwdErr');
var realNameErr = document.querySelector('.realNameErr');
var docNumErr = document.querySelector('.docNumErr');
var emailErr = document.querySelector('.emailErr');
var phoneErr = document.querySelector('.phoneErr');

var patter_username = /^[a-zA-Z0-9_]{6,30}$/;
var patter_upwd = /^\w{6,20}$/;
var patter_red = /^\w+$/;
var patter_orange=/^[a-zA-Z]{6,20}$/;
var patter_green=/^\W{6,20}$/;
var patter_realName = /^[\u4E00-\u9FA5a-zA-Z]{3,30}/;
var patter_docNum = /^\d{17}(?:\d|x|X)$/;
var patter_email = /^\w+@\w+[\.\w]+$/;
var patter_phone =/^0?1[3|4|5|6|7|8|9][0-9]\d{8}$/;

    myImooc.onmouseover = function () {
        this.style.color = '#fa7403';
        list.style.display = 'block';
    }
myImooc.onmouseout = function () {
    this.style.color = '';
    list.style.display = 'none';
}
list.onmouseover = function () {
    this.style.display = 'block';
}

//username
username.onblur = function () {
    if (patter_username.exec(this.value)) {
        usernameErr.innerHTML = '用户名输入正确';
        usernameErr.style.color = 'green';
    } else {
        usernameErr.innerHTML = "6-30位字母、数字或'_',字母开头";
        usernameErr.style.color = 'red';
    }
}

//upwd
upwd.onblur = function () {
    if (patter_upwd.exec(this.value)) {
        upwdErr.innerHTML = '';
        if (patter_red.exec(this.value)) {
            red.style.display = 'block';
        }else if(patter_orange.exec(this.value)){
            orange.style.display='block';
        }else if(patter_green.exec(this.value)){
            green.style.display='block';
        }
    } else {
        upwdErr.innerHTML = '请输入6-20位字母、数字或符号';
        upwdErr.style.color = 'red';
    }
}

//repwd
repwd.onblur = function () {
    if (patter_upwd.exec(this.value)) {
        if (this.value === upwd.value) {
            repwdErr.innerHTML = '两次密码输入一致';
            repwdErr.style.color = 'green';
        } else {
            repwdErr.innerHTML = '两次密码输入不一致';
            repwdErr.style.color = 'red';
        }
    } else {
        repwdErr.innerHTML = '密码不能为空';
        repwdErr.style.color = 'red';
    }
}

//realName
realName.onblur = function () {
    if (patter_realName.exec(this.value)) {
        realNameErr.innerHTML = '姓名输入正确';
        realNameErr.style.color = 'green';
    } else {
        realNameErr.innerHTML = '姓名只能包含中文或者英文,且字符在3-30个之间';
        realNameErr.style.color = 'red';
    }
}

//docNum
docNum.onblur = function () {
    if (patter_docNum.exec(this.value)) {
        docNumErr.innerHTML = '号码输入正确';
        docNumErr.style.color = 'green';
    } else {
        docNumErr.innerHTML = '18位数字,最后一位可以是大写或者小写的x';
        docNumErr.style.color = 'red';
    }
}

//email
email.onblur = function () {
    if (patter_email.exec(this.value)) {
        emailErr.innerHTML = '邮箱格式正确';
        emailErr.style.color = 'green';
    } else {
        emailErr.innerHTML = '请输入正确的邮箱';
        emailErr.style.color = 'red';
    }
}

//phone
phone.onblur=function(){
    if(patter_phone.exec(this.value)){
        phoneErr.innerHTML='手机格式正确';
        phoneErr.style.color='green';
    }else{
        phoneErr.innerHTML='您输入的手机号码不是有效的格式!';
        phoneErr.style.color='red';
    }
}

//submitBtn
submitBtn.onclick=function(){
    username.onblur();
    upwd.onblur();
    repwd.onblur();
    realName.onblur();
    docNum.onblur();
    email.onblur();
    phone.onblur();
    if(patter_username.test(username.value)&&
        patter_upwd.test(upwd.value)&&
        patter_red.test(red.value)&&
        patter_realName.test(realName.value)&&
        patter_docNum.test(docNum.value)&&
        patter_email.test(email.value)&&
        patter_phone.test(phone.value)){
        window.open('https://www.imooc.com','_self');
    }else{
        alert('验证失败');
    }
}

//realName_rule
realName_rule.onmouseover=function(){
    realName_text.style.display='block';
}
realName_rule.onmouseout=function(){
    realName_text.style.display='none';
}

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

写回答

1回答

好帮手慕慕子

2019-06-21

同学你好, 

1. 因为你的imooc和下拉列表是同级元素导致鼠标移出imooc隐藏下拉列表和鼠标移入下拉列表显示两个事件是冲突的, 建议: 

(1)可以通过增加a标签的上下内边距, 增加鼠标在imooc的有效区域

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

(2) 通过设置一个全局变量, 判断鼠标是否移入下拉菜单,

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

2. 姓名规则这里, 建议: 可以为父元素realNameErr添加鼠标移入事件, 在鼠标移入父元素的时候, 显示提示信息, 鼠标离开父元素的时候隐藏, 另, 需要给父级元素设置相对定位, 让提示显示参照realNameErr进行定位(具体细节同学自己调整哦)

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

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

3. 棉麻验证规则的强度的正则表达是, 可以参考下图

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

同学可以结合示例, 自己测试修改一下哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~



1

0 学习 · 14456 问题

查看课程