js小练习(三):表单操作

(一)主要功能:

(1)限制用户名和密码的格式:

包括限制长度,只能是数字和字母,不能为空等等,这部分主要通过正则表达式和onblur事件来筛选判断。

(2)两次密码的验证:

判断两次的value值是否一致,同样是使用到了onblur事件。

(3)单选框:

radio类型,name值相同,js取值的时候不能用document.getElementById(“xxx”),而要使用document.all(“xxx”),取值使用数组和checked来判断,事件的话我选择的onclick,用onblur偶尔会有小bug。

(4)复选框:

checkbox类型,基本思想同单选框。需要注意的是复选框的全选和全部反选的功能,核心是该框的状态和所有选项框的checked一致。

(5)下拉列表:

这个没啥好说的,select和option,事件选择onchange。

(6)textarea部分:

事件的话我使用的是onkeyup,在键盘松开时判断,主要是用来字数计数。

(二)代码实现:

(1)html部分:

<form action="success.html" method="post" class="message">
    <!--表单提交成功后跳转页面,考虑到安全性,method建议使用post-->
    
    <div class="title">
        简易表单
    </div>
    
    <div class="main">
        <!--用户名-->
        <div>
            用户名:
            <input type="text" id="id" name="id" onblur="GetId(this.value)" />
            <span id="idMsg"> 用户名由5~20位的字母、数字组成!</span>
        </div>

        <!--密码-->
        <div>
            密&nbsp;&nbsp;&nbsp;码:
            <input type="password" id="password" name="password" onblur="vertify(this.value)" />
            <span id="passwordMsg"> 请输入密码,密码由5~20位的字母、数字组成!</span>
        </div>

        <!--确认密码-->
        <div>
            确认密码:
            <input type="password" id="confpassword" name="confpassword" onblur="vertifypwd(this.value)" />
            <span id="confpassMsg">请确保两次密码输入一致!</span>
        </div>

        <!--性别-->
        <div>
            性别:
            <input type="radio" value="男" name="sex" onclick="getSex(this.value)" />男
            <input type="radio" value="女" name="sex" onclick="getSex(this.value)" />女
            <span id="sexMsg"></span>
        </div>

        <!--技术-->
        <div>
            技术:
            <input type="checkbox" value="java" name="inset" onblur="getLike(this.value)" />java
            <input type="checkbox" value="C++" name="inset" onblur="getLike(this.value)" />C++
            <input type="checkbox" value="PHP" name="inset" onblur="getLike(this.value)" />PHP
            <input type="checkbox" value="C#" name="inset" onblur="getLike(this.value)" />C#
            &nbsp;&nbsp;&nbsp;全选:<input type="checkbox" id="selectAll" name="selectAll" onclick="Select()" />
        </div>

        <!--学历-->
        <div>
            请选择你的学历:
            <select id="Education" onchange="getEducation(this.value)">
                <option value="大学">大学</option>
                <option value="研究生">研究生</option>
                <option value="博士">博士</option>
                <option value="高中">高中</option>
                <option value="初中">初中</option>
            </select>
            <span id="educationMsg"></span>
        </div>

        <!--自我评价-->
        <div>
            请说说你对自己的评价:
            <textarea id="note" name="note" onkeyup="checkLength(this.value)">

        </textarea>
            <span id="noteMsg"></span>
        </div>
    </div>

    <!--提交表单-->
    <div class="submit">
        <input type="submit" value="提交表单" />
    </div>


</form>

(2)js部分:

function GetId(id) {/验证用户名格式/ 
var UserMsg = document.getElementById("idMsg")
if (password != "" && (/^\w{5,20}$/.test(id)) {
    UserMsg.innerHTML = "<font color = \"green\">用户名输入正确!</font>";

} else {
    UserMsg.innerHTML = "<font color = \"red\">用户名输入格式错误!</font>";

}

} 

function vertify(password) {//验证密码格式 
var pwdMsg = document.getElementById("passwordMsg");
if (password != "" && (/^\w{5,20}$/.test(password))) {
    pwdMsg.innerHTML = "<font color=\"green\">密码格式输入正确!</font>";

} else {
    pwdMsg.innerHTML = "<font color=\"red\">密码格式不正确!</font>"

}

} 

function vertifypwd(confpassword) {//验证两次密码是否一致 
var confpwdMsg = document.getElementById("confpassMsg");
if (confpassword == document.getElementById("password").value) {
    confpwdMsg.innerHTML = "<font color=\"green\">两次密码输入一致!</font>";

} else {
    confpwdMsg.innerHTML = "<font color=\"red\">两次密码输入不一致!</font>";

}

} 

function getSex() {//单选框 
var sex = document.all("sex");
for (var x = 0; x <= sex.length; x++) {
    if (sex[x].checked) {
        document.getElementById("sexMsg").innerHTML = "您的性别是:" + sex[x].value;
    }
}

} 

function getLike() {//复选框 
var info = "您所掌握的技术有:";
var instLike = document.all("inset");
for (var x = 0; x < instLike.length; x++) {
    if (instLike[x].checked) {
        info += instLike[x].value + "";
    }
}

} 

function Select() {//复选框全选、反选 
var instAll = document.all("inset");
if (instAll.length == undefined) {//如果只有单个元素,使用all之后,alert(instAll.length),显示为undefined。原理暂时还没弄明白,但是如果不加上这段处理,复选框如果只有一个元素,全选或者全部反选会失效。
    instAll.checked = document.getElementById("selectAll").checked;
} else {
    for (var x = 0; x < instAll.length; x++) {
        instAll[x].checked = document.getElementById("selectAll").checked;//反选和全选核心在于将待选择的选项状态设置的和全选/全反选的状态一致
    }
}

} 

function getEducation(value) {//下拉列表 
/*document.getElementById("Education").length = 0;*/ //清空下拉列表
document.getElementById("educationMsg").innerHTML = "您的学历是:" + value;

} 

function checkLength(note) {//字数统计 
var len = note.length;
var max = 20;
document.getElementById("noteMsg").innerHTML = "您现在的字数是:" + len + ",请勿超出20字";
if (len > max) {
    document.getElementById("noteMsg").innerHTML = "您现在的字数是:" + len + ",已超出字数!";
}

} 

(三)运行结果:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(四)总结:

没有连数据库,只是简单的梳理了一下表单方面的知识,其实提交那里应该再写一个简单的函数判断一下表单是否填完的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值