JS进行简单的表单验证(附详细代码)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



提示:以下是本篇文章正文内容,下面案例可供参考

一、JS表单验证是什么?

表单验证是javascript中的高级选项之一。JavaScript 可用来在数du据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

一、JS表单验证需求分析?

        表单验证需求
        1、用户名不能为空
        2、用户名必须在6-14位
        3、用户名和密码由数字和字母组成(正则表达式)
        4、密码和确认密码一致,邮箱地址合法
        5、统一失去焦点验证
        6、错误信息统一在span标签中显示,要求字体12号,红色,验证成功显示绿色字体
        7、文本框获得焦点,清除错误信息,如果文本框中数据不合法,要求清空文本框的		value
        8、最终表单所有项均合法方可提交

三、表单验证所需事件

1、所用到的三个事件:onfocus(焦点聚焦事件)、onblur(焦点离开事件)、onclick点击事件)。
2、利用事件触发函数,函数中执行校验的信息。
3、使用butten按钮提交事件
结果展示

设置from表单及其文本框,代码如下(示例):

<form id="userFrom" method="get">

    用户名:&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="username" name="username">
    <span id="usernameError"></span>
    <br>
    
    密码:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="password" name="password">
    <span id="passwordError"></span>
    <br>
    
    确认密码:<input type="text" id="confirmPwd" name="confirmPwd">
    <span id="confirmPwdError"></span>
    <br>
    
    邮箱地址:<input type="text" id="email" name="email">
    <span id="emailError"></span>
    <br>
    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="sbutten" value="提交信息" id="submitBtn">
    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="reset" value="重置信息" id="resetBtn">
</form>

2.设置触发事件函数JS代码

JS表单验证代码(示例):

   <script type="text/javascript">
        /*
            表单验证需求
            1、用户名不能为空
            2、用户名必须在6-14位
            3、用户名和密码由数字和字母组成(正则表达式)
            4、密码和确认密码一致,邮箱地址合法
            5、统一失去焦点验证
            6、错误信息统一在span标签中显示,要求字体12号,红色
            7、文本框获得焦点,清除错误信息,如果文本框中数据不合法,要求清空文本框的value
            8、最终表单所有项均合法方可提交
         */
         //网页加载完毕后可执行JS代码
        window.onload=function () {
            var retVal=true;
            var usernameElt=document.getElementById("username");
            var usernameErrorSpan=document.getElementById("usernameError");
            //用户名正则表达式
            var usernameRegExp = /^[a-zA-Z0-9_-]{4,16}$/;
            
			 //用户名验证开始
            //用户名验证,失去焦点验证
            usernameElt.onblur=function () {
                //判断username的value值是否为空
                //清除前后空白
                var username = usernameElt.value.trim();
                usernameElt.value = username;
                var usernameRetVal = usernameRegExp.test(username);

                //username不为空或全为空格开始验证
                if (!(usernameElt.value=="")) {
                    if (!usernameRetVal) {
                        //此处测试正确
                        //获取用户名后文本对象
                        usernameErrorSpan.innerHTML = "<font color='red'>用户名不符合格式</font>";
                    } else {
                        //此处测试正确
                        usernameErrorSpan.innerHTML = "<font color='green'>用户名符合格式</font>";
                    }
                }else {
                    usernameErrorSpan.innerHTML="<font color='red'>用户名不能为空</font>"
                }
            }




            //获取焦点,清除span内容
            usernameElt.onfocus=function () {
                //如果username等于一个或多个空格
                //清空非法value,使用index函数,结果等于-1,则不含有该字符串
                if(!(usernameErrorSpan.innerText.indexOf("不")==-1)){
                    //如果usernameError不为空串,字符串中含有"不"清空value
                    usernameElt.value="";
                }
                //清空span内容
                usernameErrorSpan.innerText="";
            }
            
         

            //密码验证,失去焦点验证
            var passwordElt=document.getElementById("password");
            var  passwordErrorSpan=document.getElementById("passwordError")
            var passwordRegExp=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z\\W]{6,18}$/
            //密码验证,失去焦点开始验证
            passwordElt.onblur=function () {
                //去除前后空白
                var password=passwordElt.value.trim();
                passwordElt.value=password;
                //password不为空开始验证
                if(!(passwordElt.value=="")){
                    //密码格式验证
                    var passwordRetVal=passwordRegExp.test(password);
                    if(passwordRetVal){
                       passwordErrorSpan.innerHTML="<font color='green'>密码格式正确</font>"
                    }else{
                        passwordErrorSpan.innerHTML="<font color='red'>密码格式不正确(数字和字母结合)</font>"
                    }
                }else{
                    //密码不能为空
                    passwordErrorSpan.innerHTML="<font color='red'>密码不能为空</font>"
                }
            }




            //密码获得焦点,密码获得焦点,重复密码span内容清空
            passwordElt.onfocus=function () {
                //清空非法value,使用index函数,结果等于-1,则不含有该字符串
                if(!(passwordErrorSpan.innerText.indexOf("不")==-1)){
                    //如果passwordErrorSpan不为空串,字符串中含有"不"清空value
                    passwordElt.value="";
                }
                //清空span内容
                passwordErrorSpan.innerText="";
                

            }




            //确认密码验证,失去焦点验证
            var confirmPwdElt=document.getElementById("confirmPwd");
            var  confirmPwdErrorSpan=document.getElementById("confirmPwdError");

            //密码验证,失去焦点开始验证
            confirmPwdElt.onblur=function () {
                //清除验证密码中的前后空白
                var confirmPwd=confirmPwdElt.value.trim();
                confirmPwdElt.value=confirmPwd;
                //判断密码内容是否为空,不为空则开始验证
                if(!(confirmPwdElt.value=="")){
                    //重复密码内容不为空,开始验证
                    //判断密码是否为空,不为空则开始验证
                    if(passwordElt.value==""){
                        confirmPwdErrorSpan.innerHTML="<font color='red'>密码不能为空</font>"
                    }else{
                        //判断密码和重复密码是否相等
                        if(passwordElt.value===confirmPwdElt.value){
                            //更改passwordErrorSpan中内容
                            confirmPwdErrorSpan.innerHTML="<font color='green'>重复密码验证成功</font>"
                        }else {
                            confirmPwdErrorSpan.innerHTML="<font color='red'>重复密码验证不成功</font>"
                        }
                    }
                }else{
                    confirmPwdErrorSpan.innerHTML="<font color='red'>验证密码不能为空</font>"
                }
            }
            //获取重复密码焦点时,清空span内数据,如果重复密码错误,则清空重复密码
            confirmPwdElt.onfocus=function () {
                //使用indexOf()方法判断span字符串中是否含有"失"字,结果等于-1,则不含有失字
                if(!(confirmPwdErrorSpan.innerHTML.indexOf("失")==-1)){
                    //清空非法重复密码值
                    confirmPwdElt.value="";
                }
                //获取焦点时清除span内值
                confirmPwdErrorSpan.innerText="";
            }





            //邮箱地址验证
            var emailElt=document.getElementById("email");
            var emailErrorSpan=document.getElementById("emailError")
            var emailRegExp=/^\w{3,12}@\w{1,5}\.[a-z]{2,3}$/;
            //失去焦点时开始验证
            emailElt.onblur=function () {
                //去除邮箱地址前后空白
                var email=emailElt.value.trim();
                emailElt.value=email;
                var emailRetVal=emailRegExp.test(email);
                //邮箱地址不为空时开始验证
                if(!(emailElt.value=="")){
                    //开始验证
                    if(emailRetVal){
                        emailErrorSpan.innerHTML="<font color='green'>邮箱地址格式验证成功</font>"
                    }else{
                        emailErrorSpan.innerHTML="<font color='red'>邮箱地址格式验证不成功</font>"
                    }
                }else {
                    emailErrorSpan.innerHTML="<font color='red'>邮箱地址不能为空</font>"
                }
            }



            //获得焦点时,邮箱格式不正确,则清空非法邮箱value值,并清除span内容
            emailElt.onfocus=function () {
                //indexOf方法结果为-1,则表示不含有该字符串
                if(!(emailErrorSpan.innerText.indexOf("失")==-1)){
                    //清空非法value值
                    emailElt.value="";
                }
                    //不管地址验证是否成功,在获取焦点后都要讲span中内容删除
                emailErrorSpan.innerText="";
            }
            // 提交表单
            //获取表单队形
            var submitElt=document.getElementById("submitBtn");
            //点击事件发生,进行表单信息提交验证
            submitElt.onclick=function () {
                    if(usernameErrorSpan.innerText==""){
                        usernameElt.focus();
                         usernameElt.blur();
                    }
                    if(passwordErrorSpan.innerText==""){
                        passwordElt.focus();
                        passwordElt.blur();
                    }
                    if (confirmPwdElt.innerText==""){
                        confirmPwdElt.focus();
                        confirmPwdElt.blur();
                    }
                    if(emailElt.innerText==""){
                        emailElt.focus();
                        emailElt.blur();
                    }
                    //表单提交
                var userFromElt=document.getElementById("userFrom");
                if(usernameElt.innerText.indexOf("不")==-1||passwordElt.innerText.indexOf("不")==-1||confirmPwdElt.innerText.indexOf("不")==-1||emailElt.innerText.indexOf("不")==1){
                    userFromElt.action="http://localhost:8080/jd/save"
                    //提交表单
                    userFromElt.submit();
                }
            }
        }
    </script>

3.结果展示

代码测试结果

该处使用的url网络请求的数据。


总结

JS代码验证总结:
1、利用触发事件实现对表单信息的验证,并使用butten按钮提交表单。
2、不适用submit提交按钮的原因:需要对四项验证内容进行验证,验证成功才能提交,submit按钮直接提交信息。
3、点击提交按钮信息后出现404错误,是因为表单IP地址有误,换一个可以使用的IP地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值