作家
登录

番茄的表单验证类代码修改版

作者: 来源:www.28hudong.com 2013-03-30 03:01:05 阅读 我要评论

在经典论坛上发过一次,个人的项目中在后台处理时用到这个东西,对于简单的表单验证还是挺方便的。 因为不想让代码变得太臃肿,所以有很多不常用的功能就没有再添加了 对于我佛山人的意见就没有做修改了,为什么?因为我懒呗,哈哈 今天看到omeweb也修改了一个版本,做了许多修改,改得挺不错的,谢谢了。 源码在这里: //去除字符串两边的空格 String.prototype.trim = function () { return this.replace(/(^s+)|(s+$)/g, ""); } //检测字符串是否为空 String.prototype.isEmpty = function () { return !(/.?[^s ]+/.test(this)); } //检测值是否介于某两个指定的值之间 String.prototype.isBetween = function (val, min, max) { return isNaN(val) == false && val >= min && val <= max; } //获取最大值或最小值 String.prototype.getBetweenVal = function (what) { var val = this.split(','); var min = val[0]; var max = val[1] == null ? val[0] : val[1]; if (parseInt(min) > parseInt(max)) { min = max; max = val[0]; } return what == 'min' ? (isNaN(min) ? null : min) : (isNaN(max) ? null : max); } var validator = function (formObj) { this.allTags = formObj.getElementsByTagName('*'); //字符串验证正则表达式 this.reg = new Object(); this.reg.english = /^[a-zA-Z0-9_-]+$/; this.reg.chinese = /^[u0391-uFFE5]+$/; this.reg.number = /^[-+]?d+(.d+)?$/; this.reg.integer = /^[-+]?d+$/; this.reg.float = /^[-+]?d+(.d+)?$/; this.reg.date = /^(d{4})(-|/)(d{1,2})2(d{1,2})$/; this.reg.email = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/; this.reg.url = /^(((ht|f)tp(s?))://)[a-zA-Z0-9]+.[a-zA-Z0-9]+[/=?%-&_~`@[] ':+!]*([^<>""])*$/; this.reg.phone = /^(((d{2,3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}(-d {1,4})?$/; this.reg.mobile = /^(((d{2,3}))|(d{3}-))?((13d{9})|(159d{8}))$/; this.reg.ip = /^(0|[1-9]d?|[0-1]d{2}|2[0-4]d|25[0-5]).(0|[1-9]d?|[0-1]d{2}|2[0-4] d|25[0-5]).(0|[1-9]d?|[0-1]d{2}|2[0-4]d|25[0-5]).(0|[1-9]d?|[0-1]d{2}|2[0-4]d|25[0- 5])$/; this.reg.zipcode = /^[1-9]d{5}$/; this.reg.qq = /^[1-9]d{4,10}$/; this.reg.msn = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/; this.reg.idcard = /(^d{15}$)|(^d{17}[0-9Xx]$)/; //错误输出信息 this.tip = new Object(); this.tip.unknow = '未找到的验证类型,无法执行验证。'; this.tip.paramError = '参数设置错误,无法执行验证。'; this.tip.required = '不允许为空。'; this.tip.english = '仅允许英文字符及下划线 (a-zA-Z0-9_)。'; this.tip.chinese = '仅允许中文字符。'; this.tip.number = '不是一个有效的数字。'; this.tip.integer = '不是一个有效的整数。'; this.tip.float = '不是一个有效的浮点数。'; this.tip.date = '不是一个有效的日期格式。 (例如:2007-06-29)'; this.tip.email = '不是一个有效的电子邮件格式。'; this.tip.url = '不是一个有效的超链接格式。'; this.tip.phone = '不是一个有效的电话号码。'; this.tip.mobile = '不是一个有效的手机号码。'; this.tip.ip = '不是一个有效的IP地址。'; this.tip.zipcode = '不是一个有效的邮政编码。'; this.tip.qq = '不是一个有效的QQ号码。'; this.tip.msn = '不是一个有效的MSN帐户。'; this.tip.idcard = '不是一个有效的身份证号码。'; //获取控件名称 this.getControlName = function () { return this.element.getAttribute('controlName') == null ? '指定控件的值' : this.element.getAttribute('controlName'); } //设定焦点 this.setFocus = function (ele) { try { ele.focus(); } catch (e){} } //设置边框颜色 this.setBorderColor = function (ele) { var borderColor = ele.currentStyle ? ele.currentStyle.borderColor : document.defaultView.getComputedStyle(ele, null)['borderColor']; ele.style.borderColor = '#ff9900'; ele.onkeyup = function () { this.style.borderColor = borderColor; } } //输出错误反馈信息 this.feedback = function (type) { try { var msg = eval('this.tip.' + type) == undefined ? type : this.getControlName() + eval('this.tip.' + type); } catch (e) { msg = type; } this.setBorderColor(this.element); alert(msg); this.setFocus(this.element); }; //执行字符串验证 this.validate = function () { var v = this.element.value; //验证是否允许非空 var required = this.element.getAttribute('required'); if (required != null && v.isEmpty()) { this.feedback('required'); return false; } //验证是否合法格式 var dataType = this.element.getAttribute('dataType'); if (!v.isEmpty() && dataType != null && dataType.toLowerCase() != 'password') { dataType = dataType.toLowerCase(); try { if (!(eval('this.reg.' + dataType)).test(v)) { this.feedback(dataType); return false; } } catch(e) { this.feedback('unknow'); return false; } } //执行数据验证 var confirm = this.element.getAttribute('confirm'); if (confirm != null) { try { var data = eval('formObj.' + confirm + '.value'); if (v != data) { alert('两次输入的内容不一致,请重新输入。'); this.setBorderColor(this.element); this.setFocus(this.element); return false; } } catch (e) { this.feedback('paramError'); return false; } } //验证数字大小 var dataBetween = this.element.getAttribute('dataBetween'); if (!v.isEmpty() && dataBetween != null) { var min = dataBetween.getBetweenVal('min'); var max = dataBetween.getBetweenVal('max'); if (min == null || max == null) { this.feedback('paramError'); return false; } if (!v.isBetween(v.trim(), min, max)) { this.feedback(this.getControlName() + '必须是介于 ' + min + '-' + max + ' 之 间的数字。'); return false; } } //验证字符长度 var dataLength = this.element.getAttribute('dataLength'); if (!v.isEmpty() && dataLength != null) { var min = dataLength.getBetweenVal('min'); var max = dataLength.getBetweenVal('max'); if (min == null || max == null) { this.feedback('paramError'); return false; } if (!v.isBetween(v.trim().length, min, max)) { this.feedback(this.getControlName() + '必须是 ' + min + '-' + max + ' 个字符 。'); return false; } } return true; }; //执行初始化操作 this.init = function () { for (var i=0; i<this.allTags.length; i++) { if (this.allTags[i].tagName.toUpperCase() == 'INPUT' || this.allTags[i].tagName.toUpperCase() == 'SELECT' || this.allTags[i].tagName.toUpperCase() == 'TEXTAREA') { this.element = allTags[i]; if (!this.validate()) return false; } } }; return this.init(); }

  推荐阅读

  JavaScript 版本自动生成文章摘要

实现内容:截断一段含有HTML代码的文本,但是不会出现围堵标记没有封闭的问题。 php版本地址核心部分如下: 复制代码 代码如下:function Generate_Brief(text,length){ if(text.length < length) return text; var>>>详细阅读


本文标题:番茄的表单验证类代码修改版

地址:http://www.17bianji.com/kaifa2/JS/29546.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)