一个简洁的通用前端输入数据校验方法
来源:互联网 发布:泰州网络公关技巧 编辑:程序博客网 时间:2024/05/22 15:30
每个项目都会有对输入数据做一些简单校验的事情,比如特殊字符过滤、最大最小长度,数字、邮箱等格式验证等等。
这些验证往往在一个项目的很多表单里都有大量重复工作,因此很多前端框架都设计一套通用验证方法,来降低这个重复劳动。
但这些使用框架自带的验证方法,都需要额外增加一些文件的引用,我很烦恼这些,因为我是一个极简主义者。
因此,下面这个简单的通用校验设想就出台了:
// 通用输入校验方法,简洁明了,方便拓展修改function vivaValid(obj) { var r = '', o = $(obj), v = o.val(), typ = o.get(0).tagName.toLowerCase(), //输入框类型input、textarea、select、checkbox、radio等 reg = o.attr('vali_reg'), //校验用正则表达式 msg = o.attr('vali_msg'), //校验结果通知消息 max = o.attr('maxlength'), //最大长度限制 min = o.attr('minlength'), //最小长度限制 mth = o.attr('vali_match'), //匹配项的编号 btn = o.attr('lock_btn'), //需禁用的按钮编号(逗号分隔) lks = o.attr('lock_self'), //验证不过时,是否焦点锁定自己 rqr = o.is(':required'); //是否必填 $('.warn-msg').remove(); var r = (rqr && typ == 'input' && o.attr('type') == 'text' && !v) ? 'This can not be empty' : (rqr && typ == 'input' && o.attr('type') == 'checkbox' && !o.is(':checked')) ? 'Please checked it to continue' : (rqr && typ == 'textarea' && !v) ? 'This can not be empty' : (rqr && typ == 'select' && !v) ? 'This must select one to continue' : (min != undefined && v && v.length < parseInt(min, 10)) ? ('This length must be long than ' + min) : (max != undefined && v && v.length > parseInt(max, 10)) ? ('This length must be less than ' + max) : (reg != undefined && msg != undefined && v && !(new RegExp(reg, 'g')).test(v)) ? msg : (mth != undefined && msg != undefined && v && v != $('#' + mth).val()) ? msg : ''; if (r) { //校验不通过 $('<p class="help-block warn-msg">' + r + '</p>').insertAfter(o); //显示提示消息,这里样式自己灵活设定 (lks == undefined || lks) && o.focus(); //默认锁定,只有指定并且值为true,才焦点锁定自己 } if (btn != undefined) { //指定了禁用按钮 var btns = btn.split(','); //用逗号分割指定的多个按钮编号 for (var i = 0; i < btns.length; i++) { //根据验证结果,逐个禁用或解禁指定的提交按钮 r ? $('#' + btns[i]).attr('disabled', 'disabled') : $('#' + btns[i]).removeAttr('disabled'); } }}
下面是调用示例:
<ul> <li> <input lock_btn="btnSave" onblur="vivaValid(this);" type="text" id="txtAccount" required placeholder="User Name" minlength="4" maxlength="20" vali_reg="^[A-Za-z0-9_]*$" vali_msg="Must be 'A to 'Z', 'a' to 'z', '0' to '9' and '_'" value="@Model.Account"/> </li> <li> <input lock_btn="btnSave" onblur="vivaValid(this);" type="password" id="txtPassword" required placeholder="Password" minlength="6" maxlength="12"/> </li> <li> <input lock_btn="btnSave" onblur="vivaValid(this);" type="password" id="txtConfirmPassword" required placeholder="Confirm Password" vali_match="txtPassword" vali_msg="Must match password entered above" /> </li> <li> <button onclick="save();" id="btnSave">NEXT</button> </li></ul>
阅读全文
0 0
- 一个简洁的通用前端输入数据校验方法
- [转]一种通用的输入校验方法和气球泡提示的实现(键盘用户界面模块)
- Struts2的数据输入校验
- 一个简洁通用的调用DLL函数的帮助类
- 时间输入框校验通用
- 前端数据实时校验
- 一个完全独立的、简洁的jquery前端分页组件,用到动态添加页内样式的方法哦。
- strut2输入校验框架的一个例子
- 一个高效简洁的Struts分页方法
- 一个高效简洁的Struts分页方法
- 一个高效简洁的Struts分页方法
- 一个简洁的MD5加密方法
- Ajax---后台校验用户输入的数据
- 常用的数据校验方法
- 常用的数据校验方法
- 常见的数据校验方法
- 常用的数据校验方法
- 常见的数据校验方法
- codevs 1164 || NOIP 2007 统计数字 模拟 解题报告
- HDU Bone Collector (01背包,裸题)
- python生成业务报表实例
- linux redis-4.0.1 图解安装教程
- checkbox后台增删
- 一个简洁的通用前端输入数据校验方法
- Hibernate与 MyBatis的比较
- 创建DataGuard为什么要开启force logging
- MVC 5中Async和await使用
- Python之Scrapy框架Redis实现分布式爬虫详解
- Sublime3 Text 如何安装插件以及常用的插件必备
- 架构师之路-创业互联网公司如何搭建自己的技术架构
- Unity3D 使用ShareSDK进行QQ授权登录
- ubuntu screen 使用方法