问题描述
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>无标题文档</title></head><body><scriptlanguage="JavaScript"src="Check.js"></script>通用表单函数测试:<formname="form1"onsubmit="returnCheckForm(this)">test:<inputtype="text"name="test">不验证<br>账号:<inputtype="text"check="^/S+$"warning="账号不能为空,且不能含有空格"name="id">不能为空<br><!--check="^/S+$"-->密码:<inputtype="password"check="/S{6,}"warning="密码六位以上"name="id">六位以上<br>电话:<inputtype="text"check="^/d+$"warning="电话号码含有非法字符"name="number"value=""><br>相片上传:<inputtype="file"check="(.*)(/.jpg|/.bmp)$"warning="相片应该为JPG,BMP格式的"name="pic"value="1"><br>出生日期:<inputtype="text"check="^/d{4}/-/d{1,2}-/d{1,2}$"warning="日期格式2004-08-10"name="dt"value="">日期格式2004-08-10<br>省份:<selectname="sel"check="^0$"warning="请选择所在省份"><optionvalue="">请选择<optionvalue="1">福建省<optionvalue="2">湖北省</select><br>选择你喜欢的运动:<br>游泳<inputtype="checkbox"name="c"check="^0{2,}$"warning="请选择2项或以上">篮球<inputtype="checkbox"name="c">足球<inputtype="checkbox"name="c">排球<inputtype="checkbox"name="c"><br>你的学历:大学<inputtype="radio"name="r"check="^0$"warning="请选择一项学历">中学<inputtype="radio"name="r">小学<inputtype="radio"name="r"><br>个人介绍:<textareaname="txts"check="^[/s|/S]{20,}$"warning="个人介绍不能为空,且不少于20字"></textarea>20个字以上<inputtype="submit"></form></body></html>Check.jsfunctionCheckForm(oForm){varels=oForm.elements;//遍历所有表元素for(vari=0;i<els.length;i++){//是否需要验证if(els[i].check){//取得验证的正则字符串varsReg=els[i].check;//取得表单的值,用通用取值函数varsVal=GetValue(els[i]);//字符串->正则表达式,不区分大小写varreg=newRegExp(sReg,"i");if(!reg.test(sVal)){//验证不通过,弹出提示warningalert(els[i].warning);//该表单元素取得焦点,用通用返回函数GoBack(els[i])returnfalse;}}}}//通用取值函数分三类进行取值//文本输入框,直接取值el.value//单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个functionGetValue(el){//取得表单元素的类型varsType=el.type;switch(sType){case"text":case"hidden":case"password":case"file":case"textarea":returnel.value;case"checkbox":case"radio":returnGetValueChoose(el);case"select-one":case"select-multiple":returnGetValueSel(el);}//取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数functionGetValueChoose(el){varsValue="";//取得第一个元素的name,搜索这个元素组vartmpels=document.getElementsByName(el.name);for(vari=0;i<tmpels.length;i++){if(tmpels[i].checked){sValue+="0";}}returnsValue;}//取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数functionGetValueSel(el){varsValue="";for(vari=0;i<el.options.length;i++){//单选下拉框提示选项设置为value=""if(el.options[i].selected&&el.options[i].value!=""){sValue+="0";}}returnsValue;}}//通用返回函数,验证没通过返回的效果.分三类进行取值//文本输入框,光标定位在文本输入框的末尾//单多选,第一选项取得焦点//单多下拉菜单,取得焦点functionGoBack(el){//取得表单元素的类型varsType=el.type;switch(sType){case"text":case"hidden":case"password":case"file":case"textarea":el.focus();varrng=el.createTextRange();rng.collapse(false);rng.select();case"checkbox":case"radio":varels=document.getElementsByName(el.name);els[0].focus();case"select-one":case"select-multiple":el.focus();}}
解决方案
解决方案二:
貌似没有万能这一说复核项目需求就行,需求是无极限的~
解决方案三:
up修改!