JavaScript 实现注册表单

效果要求:

1.表单需包含昵称、姓名、QQ、手机号、邮箱、密码、确认密码以及提交和重置按钮;

2.点击表单里的输入框,隐藏提示文字;

3.点击提交和重置按钮时,都需要有相应的提示;

4.在表单提交是,需要进行验证验证填写内容是否合理:昵称不超过10个字、姓名不超过4个字、QQ号为长度小于等于10大于5位的数字、手机号为长度11位的数字、密码由字母和数字组成且大于8位小于16位、密码和确认密码需相同。

实现原理:

为每个需要的表单绑定onblur(元素失去焦点时触发的响应函数)

并且在响应函数里面设置相应的正则表达式

代码展示:

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
    <div class="container">
        <form action="">
            <p>昵称</p><input type="text" id="nc" placeholder="请输入十个字以内的昵称">
            <span class="nc">请输入正确的昵称</span>
            <br>
            <p>姓名</p><input type="text" id="xm" placeholder="请输入四个字以内的姓名">
            <span class="xm">请输入正确的姓名</span>
            <br>
            <p>QQ</p><input type="text" id="qq" placeholder="请输入六到十位数字的QQ">
            <span class="qq">请输入正确的QQ</span>
            <br>
            <p>手机号</p><input type="text" id="sjh" placeholder="请输入十一位的手机号">
            <span class="sjh">请输入正确的手机号</span>
            <br>
            <p>邮箱</p><input type="email" id="yx" placeholder="请输入您QQ的邮箱">
            <span class="yx">请输入正确的邮箱</span>
            <br>
            <p>密码</p><input type="password" id="mm" placeholder="密码由字母和数字组成大于八位小于十六位">
            <span class="mm">请输入正确的密码</span>
            <br>
            <p>确认密码</p><input type="password" id="qr" placeholder="输入与上述一致的密码">
            <span class="qr">与上述密码不符</span>
            <br>
            <input type="reset" value="重置" id="cz">
        </form>
        <button id="tj" >提交</button>
    </div>

    <script src="./index.js"></script>
</body>
</html>

css

*{
    margin: 0;
    padding: 0;
}

.container{
    width: 550px;
    min-height: 300px;
    margin: 0 auto;
    margin-top: 100px;
    padding: 0 20px;
    padding-top: 20px;

    background-color: wheat;
    border-radius: 30px;
    position: relative;
}

input{
    outline: none;
    width: 250px;
    margin-left: 20px;
    margin-top: 5px;
    margin-bottom: 5px;
}

input::placeholder{
    font-size: 12px;
}

p{
    display: inline-block;
    width: 100px;
    height: 25px;
    line-height: 25px;
    text-align: center;
    margin-top: 5px;
    margin-bottom: 5px;
}

span{
    font-size: 12px;
    color: red;
    display: none;
}

#cz{
    width: 45px;
    height: 25px;
    text-align: center;
    line-height: 25px;

    position: absolute;
    bottom: 15px;
    left: 25px;
}

#tj{
    width: 45px;
    height: 25px;
    text-align: center;
    line-height: 25px;

    position: absolute;
    bottom: 15px;
    right: 192px;
}

js

var nc = document.getElementById("nc")
var xm = document.getElementById("xm")
var qq = document.getElementById("qq")
var sjh = document.getElementById("sjh")
var yx = document.getElementById("yx")
var mm = document.getElementById("mm")
var qr = document.getElementById("qr")
var cj = document.getElementById("cz")
var tj = document.getElementById("tj")
var btn = document.getElementById("btn")

var pass = 0

nc.onblur = function () {
    var reg1 = /^.{1,10}$/
    var cn2 = document.getElementsByClassName("nc")[0]
    if (reg1.test(nc.value)) {
        cn2.style.display = "none"
        pass = 1
    } else {
        cn2.style.display = "inline"
    }
}

xm.onblur = function () {
    var reg1 = /^[\u4e00-\u9fa5]{1,4}$/
    var xm2 = document.getElementsByClassName("xm")[0]
    if (reg1.test(xm.value)) {
        xm2.style.display = "none"
        pass = 1
    } else {
        xm2.style.display = "inline"
    }
}

qq.onblur = function () {
    var reg1 = /^[1-9][0-9]{5,9}$/
    var qq2 = document.getElementsByClassName("qq")[0]
    if (reg1.test(qq.value)) {
        qq2.style.display = "none"
        pass = 1
    } else {
        qq2.style.display = "inline"
    }
}

sjh.onblur = function () {
    var reg1 = /^1[3456789][0-9]{9}$/
    var sjh2 = document.getElementsByClassName("sjh")[0]
    if (reg1.test(sjh.value)) {
        sjh2.style.display = "none"
        pass = 1
    } else {
        sjh2.style.display = "inline"
    }
}

yx.onblur = function () {
    var reg1 = /^[1-9][0-9]{5,9}(@qq\.com)$/
    var yx2 = document.getElementsByClassName("yx")[0]
    if (reg1.test(yx.value)) {
        yx2.style.display = "none"
        pass = 1
    } else {
        yx2.style.display = "inline"
    }
}

mm.onblur = function () {
    var reg1 = /^[0-9a-zA-Z]{8,16}$/
    var mm2 = document.getElementsByClassName("mm")[0]
    if (reg1.test(mm.value)) {
        mm2.style.display = "none"
        pass = 1
    } else {
        mm2.style.display = "inline"
    }
}

qr.onblur = function () {
    var qr2 = document.getElementsByClassName("qr")[0]
    if (qr.value == mm.value) {
        qr2.style.display = "none"
        pass = 1
    } else {
        qr2.style.display = "inline"
    }
}

tj.onclick = function () {
    if (pass == 0) {
        alert("请正确输入注册表单")
    } else if (pass == 1) {
        alert("提交成功")
    }
}

cz.onclick = function(){
    pass = 0
}

效果展示:

注册表单

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

O_oregou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值