模块化、高扩展的web验证功能
来源:互联网 发布:智慧树网络课程网页版 编辑:程序博客网 时间:2024/06/06 02:35
模块化、高扩展的web验证功能
web项目中经常会有大量数据的验证功能。
了解web验证功能的模块化与扩展性,能写出
满足所有业务场景需要的验证功能。
验证功能的特点:
1、验证数量不确定
2、不同的字段验证的规则不一样。
4、字段的规则包含多条子规则(非空、数字、字母、长度限制、汉字、规定格式等)
5、会经常删减字段
6、字段的规则会经常变化。
7、会有提交验证和焦点验证的功能
实现思路:
通过层级调用的思路,由应用层一下往逻辑底层调用,在逻辑的最底层
暴露功能的扩展性。
层次从上到下依次为:
1、应用层
2、功能层
3、验证方式扩展层
4、验证字段扩展层
5、验证规则扩展层
1、布局
在相应的验证标签上增加id字段
2.、js
(1)、 submit 调用 焦点验证initHoverVerify和提交验证submitVerify验证
(2)、 定义 焦点验证initHoverVerify和提交验证submitVerify验证
(3)、 项目初始化是调用initHoverVerify, initHoverVerify方法调用不同字段的detailHoverVerify
(4)、 点击提交按钮是调用submitVerify, submitVerify里调用不同字段的detailsubmitVerify
(5)、 detailHoverVerify里组合调用验证规则,detailsubmitVerify里组合调用验证规则
(6)、 定义不同的验证规则方法,在验证规则里执行验证通过和验证不通过的逻辑
实现思路图:
实现代码:
html部分:
<!DOCTYPE html><html><head> <title></title> <meta charset=utf-8> <link rel="stylesheet" type="text/css" href="css/school.css"> <link rel="stylesheet" type="text/css" href="css/jeDate.css"> <script src="js/jquery.min.js"></script> <script src="js/jquery.tips.js"></script> <script src="js/jquery.jedate.min.js"></script> <script src="js/frontAndBackMutuallyJs/schoolPageMutually.js"></script> <script src="js/pageLayoutJs/schoolPageLayout.js"></script> <script src="js/applicationPageJs/school.js"></script></head><style type="text/css">body{ background:#F3F7F8;}</style><body><div class="header_padding"> <div class="header"> <div class="xueji">新建学籍档案</div> <div class="import">导入学籍信息<span></span></div> </div><div class="school_centent"> <!-- 基本信息 --><div class="Percentage"> <div class="centent"> <p>基本信息</p> <div class="geRen"> <p style="padding-top:5px;padding-bottom:5px;">头像</p> <div class="touXiang"></div> </div> <div class="centent_left"> <div class="centent_padding_left"> <p>学籍号</p> <p class="dianji">点击填写</p> <input type="text" placeholder="学籍号" id="stuNum"> </div> <div class="centent_padding_left"> <p>姓名</p> <p class="dianji">点击填写</p> <input type="text" placeholder="姓名" id="stuName"> </div> <div class="centent_padding_left"> <p>出生年月</p> <p class="dianji">点击填写</p> <input type="text" placeholder="出生年月" class="birth"> </div> </div> <div class="centent_left" style="margin-left: 20px;"> <div class="centent_padding_left"> <p>电子学生证ID</p> <p class="dianji">点击填写</p> <input type="text" placeholder="电子学生证ID" id="stuCardId"> </div> <div class="centent_padding_left"> <p>名族</p> <p class="dianji">点击填写</p> <input type="text" placeholder="民族" id="nation"> </div> <div class="centent_padding_left"> <p>性别</p> <p class="dianji">点击填写</p> <input type="text" placeholder="性别" id="sex"> </div> </div> </div></div><!-- 户口信息及现居地 --><div class="Percentage"> <div class="centent"> <p>户口信息及现居地</p> <div class="centent_left"> <div class="centent_padding_left"> <p>户口所在地、国家、省、市、区</p> <p class="dianji">点击填写</p> <div class="sanJi"> <select> <option value="blind">请选择</option> </select>- <select> <option value="blind">请选择</option> </select>- <select> <option value="blind">请选择</option> </select> </div> </div> <div class="centent_padding_left"> <p>现居住地、国家、省、市、区</p> <p class="dianji">点击填写</p> <input type="text" placeholder="现居住地、国家、省、市、区" id="currentCity"> </div> <div class="centent_padding_left"> <p>联系电话</p> <p class="dianji">点击填写</p> <input type="text" placeholder="联系电话" id="stuTelephone"> </div> </div> <div class="centent_left" style="margin-left: 20px;"> <div class="centent_padding_left"> <p>详细地址</p> <p class="dianji">点击填写</p> <input type="text" placeholder="详细地址" id="censusAddress"> </div> <div class="centent_padding_left"> <p>详细地址</p> <p class="dianji">点击填写</p> <input type="text" placeholder="详细地址" id="currentAddress"> </div> <div class="centent_padding_left"> <p>邮编</p> <p class="dianji">点击填写</p> <input type="text" placeholder="邮编" id="stuPostcode"> </div> </div> </div></div> <!-- 家庭信息 --><div class="Percentage"> <div class="centent"> <p>家庭信息</p> <div class="geRen"> <p style="padding-top:5px;padding-bottom:5px;">头像</p> <div class="touXiang"></div> </div> <div class="centent_left"> <div class="centent_padding_left"> <p>姓名</p> <p class="dianji">点击填写</p> <input type="text" placeholder="姓名" id="parentName"> </div> <div class="centent_padding_left"> <p>联系电话</p> <p class="dianji">点击填写</p> <input type="text" placeholder="联系电话" id="parentPhone"> </div> </div> <div class="centent_left" style="margin-left: 20px;"> <div class="centent_padding_left"> <p>关系</p> <p class="dianji">点击填写</p> <input type="text" placeholder="关系" id="relation" > </div> <div class="centent_padding_left"> <p>邮编</p> <p class="dianji">点击填写</p> <input type="text" placeholder="邮编" id="parentPostcode"> </div> </div> </div></div><!-- 入学信息 --><div class="Percentage"> <div class="centent"> <p>入学信息</p> <div class="centent_left"> <div class="centent_padding_left"> <p>来源变动</p> <p class="dianji">点击填写</p> <input type="text" placeholder="来源变动" id="sourceChange"> </div> <div class="centent_padding_left"> <p>入学校院</p> <p class="dianji">点击填写</p> <input type="text" placeholder="入学校院" id="entranceCollege"> </div> <div class="centent_padding_left"> <p>入学学期</p> <p class="dianji">点击填写</p> <input type="text" placeholder="入学学期" id="entranceSemester"> </div> <div class="centent_padding_left"> <p>备注信息</p> <p class="dianji">点击填写</p> <input type="text" placeholder="备注信息" id="remarkInfo"> </div> </div> <div class="centent_left" style="margin-left: 20px;"> <div class="centent_padding_left"> <p>入学时间</p> <p class="dianji">点击填写</p> <input type="text" class="birth" placeholder="入学时间" id="entranceDate" readonly > </div> <div class="centent_padding_left"> <p>入学年级</p> <p class="dianji">点击填写</p> <input type="text" placeholder="入学年级" id="entranceGrade"> </div> <div class="centent_padding_left"> <p>户口类型</p> <p class="dianji">点击填写</p> <select class="household"> <option value="blind">请选择</option> </select> </div> </div> </div></div> <!-- 底部信息 --> <div class="centent"> <div class="bottom_auto"> <div class="preservation" id="preservation">保存并新建学籍档案</div> <div class="cancel">取消</div> </div> </div></div> <script src="js/jquery.min.js"></script> <script src="js/jquery.tips.js"></script> <script src="js/jquery.jedate.min.js"></script></body><script type="text/javascript"> $(function(){ $(".birth").jeDate({ format: "YYYY-MM-DD", isClear: false, isToday: false, }) $(".centent_padding_left .dianji").click(function(){ $(".centent_padding_left").css("background","#fff"); $(this).css("display","none"); $(this).next().css({"display":"block"}); $(this).parent().css("background","#0f0"); $(this).next().focus(); }) $(".centent_padding_left input").focus(function(){ $(".centent_padding_left").css("background","#fff"); $(this).parent().css("background","#0f0"); })})</script></html>
js部分:
function schoolPageMutuallyModule() { //提交功能 submit();}function submit() { var preservation=document.getElementById("preservation"); //浮动验证模块 // inithoverVerify(); preservation.onclick=function () { submitAjax(); } //提交验证模块 function submitAjax() { submitVerify(); } //提交验证模块 function submitVerify() { var isVerify=true; //学籍号验证 if(!stuNumSubmitVerify("stuNum")){ isVerify=false; } //姓名验证 if(!stuNameSubmitVerify("stuName")){ isVerify=false; } //判断是否验证通过 if (!isVerify){ return; } //恢复所有输入框 $(".dianji").next().css("borderColor","#6AC6ED"); //执行提交 alert("提交成功"); } //焦点验证模块 function inithoverVerify(idStr) {//学籍验证 stuNumHoverVerify("stuNum"); //姓名验证 stuNameHoverVerify("stuName");}//学籍号提交验证 function stuNumSubmitVerify(idStr){ var isEmpty=isEmptyVerify(idStr); if(isEmpty==false){ return false; } var isLength=lenghtVerify(idStr,5,11); if(isLength==false){ return false } return true; } //学籍号焦点验证 function stuNumHoverVerify(idStr) { $("#"+idStr).hover(function () { $("#"+idStr).css("borderColor","#6AC6ED"); },function () { var isEmpty=isEmptyVerify(idStr); if(isEmpty==false){ return; } lenghtVerify(idStr,5,11); }); $("#"+idStr).change(function () { var isEmpty=isEmptyVerify(idStr); if(isEmpty==false){ return; } lenghtVerify(idStr,5,11); }); } //姓名提交验证 function stuNameSubmitVerify(idStr){ var isEmpty=isEmptyVerify(idStr); if(isEmpty==false){ return false; } var isLength=lenghtVerify(idStr,5,11); if(isLength==false){ return false } return true; } //姓名焦点验证 function stuNameHoverVerify(idStr) { $("#"+idStr).hover(function () { $("#"+idStr).css("borderColor","#6AC6ED"); },function () { var isEmpty=isEmptyVerify(idStr); if(isEmpty==false){ return; } lenghtVerify(idStr,5,11); }); $("#"+idStr).change(function () { var isEmpty=isEmptyVerify(idStr); if(isEmpty==false){ return; } lenghtVerify(idStr,5,11); }); }//非空验证 function isEmptyVerify(idStr) { var value=document.getElementById(idStr).value; if(value==""){ $("#"+idStr).css("display","block"); $("#"+idStr).tips({ msg: "不能为空", side:1, color:'#FFF', bg:'#000', time:2 }) $("#"+idStr).css("borderColor","#f00"); return false; }else { $("#"+idStr).css("borderColor","#6AC6ED"); return true; } } //长度验证 function lenghtVerify(idStr,minlenght,maxlenght) { var value=document.getElementById(idStr).value; if(value.length>minlenght&&value.length<maxlenght){ $("#"+idStr).css("borderColor","#6AC6ED"); return true; }else { $("#"+idStr).css("display","block"); $("#"+idStr).tips({ msg: "长度须为"+minlenght+"-"+maxlenght, side:1, color:'#FFF', bg:'#000', time:2 }) $("#"+idStr).css("borderColor","#f00"); return false; } } //电话号码验证 function telePhoneVerify(idStr) { var value=document.getElementById(idStr).value; var format = /^1(3|4|5|7|8)\d{9}$/; if(format.test(value)){ $("#"+idStr).css("borderColor","#6AC6ED"); return true; }else { $("#"+idStr).css("display","block"); $("#"+idStr).tips({ msg: "手机号格式错误", side:1, color:'#FFF', bg:'#000', time:2 }) $("#"+idStr).css("borderColor","#f00"); return false; } } //邮编验证 function parentPostcodeVerify(idStr) { var value=document.getElementById(idStr).value; var format = /^[0-9]{6}$/; if(format.test(value)){ $("#"+idStr).css("borderColor","#6AC6ED"); return true; }else { $("#"+idStr).css("display","block"); $("#"+idStr).tips({ msg: "邮编格式错误", side:1, color:'#FFF', bg:'#000', time:2 }) $("#"+idStr).css("borderColor","#f00"); return false; } }
- 模块化、高扩展的web验证功能
- 如何开始一个模块化可扩展的Web App
- 如何开始一个模块化可扩展的Web App
- 如何开始一个模块化可扩展的Web App【转】
- 扩展 Tomcat Web 服务器的功能
- 扩展 Tomcat Web 服务器的功能
- 扩展 Tomcat Web 服务器的功能
- java web的短信验证功能
- 给NSString扩展一个验证邮箱的功能
- 可扩展的模块化架构的CSS
- Android功能模块化之生成验证码Bitmap
- 设计高模块化C程序的方法
- 设计高模块化C程序的方法
- Grid(前端)组件带单元格验证功能的CRUD功能扩展
- 一张图讲清楚高可用、高性能、可扩展的WEB系统架构
- 一张图讲清楚高可用、高性能、可扩展的WEB系统架构
- 一张图讲清楚高可用、高性能、可扩展的WEB系统架构
- 一张图讲清楚高可用、高性能、可扩展的WEB系统架构
- FWT板子
- Oracle 日期时间模糊查询
- gdb调试c++代码
- Java 数据结构和算法 链表
- oracle取时间最大的一条数据
- 模块化、高扩展的web验证功能
- Hive llap服务安装说明及测试
- 泛型(一)
- Java学习之线程组
- HTML元素的display属性
- Android 子线程和UI线程(主线程)的几种交互方式
- Node在Visual Studio Code 上运行
- 重建二叉树
- Android-Universal-Image-Loader最新框架解析