电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

用正則表達(dá)式和javascript對(duì)表單進(jìn)行全面驗(yàn)證

瀏覽:3日期:2023-06-25 14:16:21

使用時(shí)請(qǐng)將下面的javascript代碼存到一個(gè)單一的js文件中。1、表單要求<form name='formname' onSubmit='return validateForm(this)'></form>將對(duì)表單中的所有以下類型的域依次驗(yàn)證,所有驗(yàn)證是去除了前導(dǎo)和后綴空格的,要注意是區(qū)分大小寫的。2、空值驗(yàn)證表單中任意域加上emptyInfo屬性將對(duì)此域是否為空進(jìn)行驗(yàn)證(可以和最大長度驗(yàn)證一般驗(yàn)證方式同時(shí)使用)。無此屬性視為此域允許空值。如:<input type='text' name='fieldNamename' emptyInfo='字段不能為空!'>3、最大長度驗(yàn)證(可以和空值驗(yàn)證、一般驗(yàn)證方式同時(shí)使用):<input type='text' name='fieldNamename' maxlength='20' lengthInfo='最大長度不能超過20!'>或,<textarea maxlength='2000' lengthInfo='最大長度不能超過2000!'>3、一般驗(yàn)證方式(不對(duì)空值做驗(yàn)證):如:<input type='text' validator='^(19|20)[0-9]{2}$' errorInfo='不正確的年份!' >4、標(biāo)準(zhǔn)驗(yàn)證(不與其它驗(yàn)證方式同時(shí)使用):全部通過<input type='hidden'>來實(shí)現(xiàn),并且不需要name屬性以免提交到服務(wù)器。4.1、合法日期驗(yàn)證:<input type='text' name='yearfieldName' value='2004'>注:這里也可以是<select name='yearfieldName'></select>,以下同<input type='text' name='monthfieldName' value='02'><input type='text' name='dayfieldName' value='03'><input type='hidden' validatorType='DateGroup' year='yearfieldName' month='monthfieldName' day='dayfieldName' errorInfo='不正確的日期!'>yearfieldName、monthfieldName、dayfieldName分別為年月日字段,月和日可以是兩位(MM)或一位格式(M),此處不對(duì)每個(gè)字段分別檢驗(yàn)(如果要檢驗(yàn),請(qǐng)?jiān)谀暝氯杖齻€(gè)域分別使用前面的一般驗(yàn)證方式),只對(duì)日期的最大值是否合法檢查;4.2、日期格式驗(yàn)證(請(qǐng)注意,此驗(yàn)證不對(duì)日期是否有效進(jìn)行驗(yàn)證,還未找到從格式中得到年月日數(shù)據(jù)的方法^_^):<input type='text' name='datefieldName' value='2003-01-03 21:31:00'><input type='hidden' validatorType='Date' fieldName='datefieldName'; format='yyyy-MM-dd HH:mm:ss' errorInfo='不正確的日期!'>其中格式僅對(duì)y、M、d、H、m、s進(jìn)行支持(其它字符視為非時(shí)間的字符)4.3、列表驗(yàn)證:檢驗(yàn)列表(checkbox、redio、select)是否至少選中了一條記錄(對(duì)select主要用于多項(xiàng)選擇)<input type='checkbox' name='checkbox1'><input type='hidden' validatorType='Checkbox' fieldName='checkbox1' errorInfo='請(qǐng)至少選中一條記錄!'>其中validatorType可以是Checkbox、R、Select;對(duì)于一個(gè)select表單,如果要求選擇一條不能是第一條的記錄,請(qǐng)用下列方式:<select name='select1' emptyInfo='請(qǐng)選擇一個(gè)選項(xiàng)!'><option value=''>==請(qǐng)選擇==</option><option value='1'>1</option><select>4.4、Email驗(yàn)證:<input type='text' name='email'><input type='hidden' fieldName='email' validatorType='Email' separator=',' errorInfo='不正確的Email!'>其中separator為可選項(xiàng),表示輸入多個(gè)email時(shí)的分隔符(無此選項(xiàng)只能是一個(gè)地址)4.5、加入其它javascript操作:<script type='text/javascript'>function functionname(){自定義方法}</script>表單中加入<input type='hidden' validatorType='javascript' functionName='functionname'>(此時(shí)emptyInfo等屬性無效)時(shí)將調(diào)用function屬性中指定的javascript方法(要求方法返回true或false,返回false將不再驗(yàn)證表單,也不提交表單)。5、在表單通過驗(yàn)證提交前disable一個(gè)按鈕(也可將其它域disable,不能與其它驗(yàn)證同在一個(gè)域),不要求按鈕是表單中的最后一個(gè)<input type='button' name='提交' validatorType='disable'>6、不驗(yàn)證表單<input type='hidden' name='validate' value='0' functionName='functionname'>當(dāng)validator域值為0時(shí)不對(duì)表單進(jìn)行驗(yàn)證,直接提交表單或執(zhí)行指定function并返回true后提交表單functionName為可選

--><script type='text/javascript'>function getStringLength(str){var endvalue=0;var sourcestr=new String(str);var tempstr;for (var strposition = 0; strposition < sourcestr.length; strposition ++) {tempstr=sourcestr.charAt(strposition);if (tempstr.charCodeAt(0)>255 || tempstr.charCodeAt(0)<0) {endvalue=endvalue+2;} else {endvalue=endvalue+1;}}return(endvalue);}function trim(str){if(str==null) return '';if(str.length==0) return '';var i=0,j=str.length-1,c;for(;i<str.length;i++){c=str.charAt(i);if(c!=’ ’) break;}for(;j>-1;j--){c=str.charAt(j);if(c!=’ ’) break;}if(i>j) return '';return str.substring(i,j+1);}function validateDate(date,format,alt){var time=trim(date.value);if(time=='') return;var reg=format;var reg=reg.replace(/yyyy/,'[0-9]{4}');var reg=reg.replace(/yy/,'[0-9]{2}');var reg=reg.replace(/MM/,'((0[1-9])|1[0-2])');var reg=reg.replace(/M/,'(([1-9])|1[0-2])');var reg=reg.replace(/dd/,'((0[1-9])|([1-2][0-9])|30|31)');var reg=reg.replace(/d/,'([1-9]|[1-2][0-9]|30|31))');var reg=reg.replace(/HH/,'(([0-1][0-9])|20|21|22|23)');var reg=reg.replace(/H/,'([0-9]|1[0-9]|20|21|22|23)');var reg=reg.replace(/mm/,'([0-5][0-9])');var reg=reg.replace(/m/,'([0-9]|([1-5][0-9]))');var reg=reg.replace(/ss/,'([0-5][0-9])');var reg=reg.replace(/s/,'([0-9]|([1-5][0-9]))');reg=new RegExp('^'+reg+'$');if(reg.test(time)==false){//驗(yàn)證格式是否合法alert(alt);date.focus();return false;}return true;}function validateDateGroup(year,month,day,alt){var array=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var y=parseInt(year.value);var m=parseInt(month.value);var d=parseInt(day.value);var maxday=array[m-1];if(m==2){if((y%4==0&&y%100!=0)||y%400==0){maxday=29;}}if(d>maxday){alert(alt);return false;}return true;}function validateCheckbox(obj,alt){var rs=false;if(obj!=null){if(obj.length==null){return obj.checked;}for(i=0;i<obj.length;i++){if(obj[i].checked==true){return true;}}}alert(alt);return rs;}function validateRadio(obj,alt){var rs=false;if(obj!=null){if(obj.length==null){return obj.checked;}for(i=0;i<obj.length;i++){if(obj[i].checked==true){return true;}}}alert(alt);return rs;}function validateSelect(obj,alt){var rs=false;if(obj!=null){for(i=0;i<obj.options.length;i++){if(obj.options[i].selected==true){return true;}}}alert(alt);return rs;}function validateEmail(email,alt,separator){var mail=trim(email.value);if(mail=='') return;var em;var myReg = /^[_a-z0-9]+@([_a-z0-9]+.)+[a-z0-9]{2,3}$/;if(separator==null){if(myReg.test(email.value)==false){alert(alt);email.focus();return false;}}else{em=email.value.split(separator);for(i=0;i<em.length;i++){em[i]=em[i].trim();if(em[i].length>0&&myReg.test(em[i])==false){alert(alt);email.focus();return false;}}}return true;}function validateForm(theForm){// 若驗(yàn)證通過則返回truevar disableList=new Array();var field = theForm.elements; // 將表單中的所有元素放入數(shù)組for(var i = 0; i < field.length; i++){var vali=theForm.validate;if(vali!=null){if(vali.value=='0'){var fun=vali.functionName;if(fun!=null){return eval(fun+'()');}else{return true;}}}

var empty=false;var value=trim(field[i].value);if(value.length==0){//是否空值empty=true;}var emptyInfo=field[i].emptyInfo;//空值驗(yàn)證if(emptyInfo!=null&&empty==true){alert(emptyInfo);field[i].focus();return false;}var lengthInfo=field[i].lengthInfo;//最大長度驗(yàn)證if(lengthInfo!=null&&getStringLength(value)>field[i].maxLength){alert(lengthInfo);field[i].focus();return false;}

var validatorType=field[i].validatorType;if(validatorType!=null){//其它javascriptvar rs=true;if(validatorType=='javascript'){eval('rs='+field[i].functionName+'()');if(rs==false){return false;}else{continue;}}else if(validatorType=='disable'){//提交表單前disable的按鈕disableList.length++;disableList[disableList.length-1]=field[i];continue;}else if(validatorType=='Date'){rs=validateDate(theForm.elements(field[i].fieldName),field[i].format,field[i].errorInfo);}else if(validatorType=='DateGroup'){rs=validateDateGroup(theForm.elements(field[i].year),theForm.elements(field[i].month),theForm.elements(field[i].day),field[i].errorInfo);}else if(validatorType=='Checkbox'){rs=validateCheckbox(theForm.elements(field[i].fieldName),field[i].errorInfo);}else if(validatorType=='Radio'){rs=validateRadio(theForm.elements(field[i].fieldName),field[i].errorInfo);}else if(validatorType=='Select'){rs=validateSelect(theForm.elements(field[i].fieldName),field[i].errorInfo);}else if(validatorType=='Email'){rs=validateEmail(theForm.elements(field[i].fieldName),field[i].errorInfo);}else{alert('驗(yàn)證類型不被支持, fieldName: '+field[i].name);return false;}if(rs==false){return false;}}else{//一般驗(yàn)證if(empty==false){var v = field[i].validator; // 獲取其validator屬性if(!v) continue; // 如果該屬性不存在,忽略當(dāng)前元素var reg=new RegExp(v);if(reg.test(field[i].value)==false){alert(field[i].errorInfo);field[i].focus();return false;}}}}for(i=0;i<disableList.length;i++){disableList[i].disabled=true;}return true;}</script>

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 自动配料系统_称重配料控制系统厂家| 噪声治理公司-噪音治理专业隔音降噪公司 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 深圳办公室装修-写字楼装修设计-深圳标榜装饰公司 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 温州在线网| 818手游网_提供当下热门APP手游_最新手机游戏下载 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 暴风影音| 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 南京泽朗生物科技有限公司 | 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 猎头招聘_深圳猎头公司_知名猎头公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 深圳公司注册-工商注册公司-千百顺代理记账公司 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 20年条刷老厂-条刷-抛光-工业毛刷辊-惠众毛刷 |