博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript:表单验证模型
阅读量:6003 次
发布时间:2019-06-20

本文共 4962 字,大约阅读时间需要 16 分钟。

  之前做的验证提示以弹框的形式出现太丑陋了,不符合标准的验证提示。如果要想进行更好的数据验证操作,那么必须进行一些模块化设计,通过表单样式的改变来提示。其实,一般的数据验证无非就是那么几种,例如:

  大多数的语言,在实际开发中都具有封装性的特点。那么为了保证验证的完整性,应该有一个专门的工具文件—utlity.js文件,实际上是也就是建立一个表单验证模型,模型化操作。一般的验证提示规划格式如下:

 例如表单代码格式:

   <form action="pass.html" method="post" id="loginForm">

      <!--在以后的开发过程之中,必须要保证id与name属性内容完全一致,否则会出现怪异问题-->

      用&nbsp;户&nbsp;名:<input type="text" name="uid" id="uid" class="init"></input><span id="uidSpan"></span><br>

      初始密码:<input type="text" name="password" id="password" class="init"></input><span id="passwordSpan"></span><br>

      确认密码:<input type="text" name="conf" id="conf" class="init"></input><span id="confSpan"></span><br>

      <button type="submit" id="subBtn">登录</button>

      <button type="reset" id="restBtn">重置</button>

   </form>

 

好了,这些表单的id设置好了后,我们只需要在utlity.js工具文件中进行数据的验证。那么如何调用这个工具来进行验证呢?即流程大致如下:

对于验证而言,往往是发生在一个组件失去焦点后,表单样式发生改变。失去焦点为”onblur”事件,而获得焦点为“onfocus”。

完整的范例代码如下:

表单通过提示文件:pass.html

            

表单验证通过!

表单文件:form.html

            
javascript的程序开发之表单提交事件处理
//导入样式文件 //导入工具文件 //导入表单操作文件
用 户 名:
初始密码:
确认密码:

表单提交初始、提交失败、提交成功时样式设置文件:form.css

/*成功*/.success{    background:#f5f5f5;    font-weight:bold;    color:#000000;    border:solid 1px #009900; /*边框为绿色*/}/*失败*/.failure{    background:#f5f5f5;    font-weight:bold;    color:#000000;    border:solid 1px #990000; /*边框为红色*/}/*初始化*/.init{    background:#f5f5f5;    font-weight:bold;    color:#000000;}

表单提交操作文件,动态绑定事件处理:vfrom.js

window.onload = function(){  //在页面加载之后动态事件绑定    document.getElementById("uid").addEventListener('blur',function(){        validateUid();    },false);        document.getElementById("password").addEventListener('blur',function(){        validatePassword();    },false);        document.getElementById("conf").addEventListener('blur',function(){        validateConf();    },false);            document.getElementById('loginForm').addEventListener('submit',function(e){ //e是提交事件        if( validateUid() && validatePassword() && validateConf()){ //可以提交            this.submit();        }else{             formStop(e); //传入事件        }    },false);}function validateUid(){  //专门验证uid数据    // return validateEmpty("uid");  //空的验证     return validateEmail("uid");  //邮箱的验证    // return validateNumber("uid");    //数字的验证}function validatePassword(){  //专门验证password数据    return validateEmpty("password"); //传入元素名称}function validateConf(){    return validateRepeat("password","conf");//传入原密码和确实密码的id}/** 它负责表单在出现问题时进行提交*/function formStop(e){    if (e && e.preventDefault) { //现在是在W3C标准下执行        e.preventDefault(); //阻止浏览器的动作    }else{  //专门针对于IE浏览器的处理        window.event.returnValue= false;    }}

表单提交操作的工具文件:utility.js

/**        本文件是一个JS工具文件,里面提供有一系列的属性、函数、类。*//**    本方法主要验证指定的元素的内容是否为空*/function validateEmpty(eleId){    var obj = document.getElementById(eleId);//取得一个表单元素    if(obj != undefined){        if(obj.value == ""){  //数据错误            setFailureStyle(obj);            return false; //表示验证失败        }else{            setSuccessStyle(obj);            return true; //验证成功        }         }    return false;}/**    本方法主要验证指定的元素的内容进行正则验证*/function validateRegex(eleId,regex){ //从外部传入正则    if(validateEmpty(eleId)){  //进行是否为空的验证        var obj = document.getElementById(eleId);//取得一个表单元素        if(!regex.test(obj.value)){  //数据错误            setFailureStyle(obj);            return false; //表示验证失败        }else{            setSuccessStyle(obj);            return true; //验证成功        }         }    return false;}/**    在正则的基础上验证邮箱*/function validateEmail(eleId){    return validateRegex(eleId,/^\w+@\w+\.\w+$/);}/**    验证是否全部是数字*/function validateNumber(eleId){    return validateRegex(eleId,/^\d+(\.\d)?$/);}/**    验证确认密码*/function validateRepeat(srcId,distId){ //初始密码的id,确认密码的id    if(validateEmpty(srcId) && validateEmpty(distId)){        var srcObj = document.getElementById(srcId);        var distObj = document.getElementById(distId);        if(srcObj.value != distObj.value){ //失败            setFailureStyle(distObj);            return false; //表示验证失败        }else{ //成功            setSuccessStyle(distObj);            return true; //验证成功        }    }    return false;}/**    设置错误的样式*/function setFailureStyle(obj){        obj.className = "failure"; //设置错误的样式    var spanObj = document.getElementById(obj.id+"Span"); //取得提示信息元素    if(spanObj != null){        spanObj.innerHTML = "×";    }}/**    设置正确的样式*/function setSuccessStyle(obj){        obj.className = "success"; //设置正确的样式    var spanObj = document.getElementById(obj.id+"Span"); //取得提示信息元素    if(spanObj != null){        spanObj.innerHTML = "";    }}

 

效果截图如下:

表单默认状态样式:

任意数据为空时样式 :

用户名为邮箱格式正确时样式:

初始密码和确认密码不一致时样式:

用户名为邮箱格式正确、初始密码和确认密码一致时样式:

最后提交表单成功:

 

转载地址:http://icdmx.baihongyu.com/

你可能感兴趣的文章
关于python的包
查看>>
《静儿的服务治理私房菜》服务治理和架构
查看>>
C++中重要关键字总结
查看>>
将两个列表合并成字典的方法
查看>>
table的数据行tr上下移动
查看>>
Windows消息大全
查看>>
HDU 1392 Surround the Trees
查看>>
Java中的方法
查看>>
第69天:jQuery入口函数
查看>>
SPOJ Problem 6:Simple Arithmetics
查看>>
CSS 3 学习——渐变
查看>>
iOS开发-UINavigationController简单介绍
查看>>
Android ListView(Selector 背景图片 全选 Checkbox等按钮)
查看>>
iOS缓存-内存缓存
查看>>
20145234黄斐《信息安全系统设计基础》第二周学习总结
查看>>
Android对话框之dismiss和cancel和hide区别
查看>>
自定义simple_tag和filter在html中渲染出来的联系和区别
查看>>
可翻页查看(more、less)
查看>>
Vim文本编辑器 v7.3 正式版
查看>>
JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)
查看>>