下面的文章是复制http://godist.blog.sohu.com/26936043.html上的,留着以后会用到的
/*
* 对页面表单进行验证的函数
* 输入:form对象
* 输出:true:验证通过;false:验证失败
* 使用方法:
* 1、在需要调用的页面中包含validateForm.js 如:<SCRIPT language="JavaScript" SRC="../../../js/common/validateForm.js"></SCRIPT>
* 2、在需要进行校验的输入框中添加 validator="验证类型" cnname="输入框名称" maxlength="长度"
* 例如:<input name="FAVOURABLE_FEE" type="text" size="16" validator="float10_2Null" cnname="优惠费用" maxlength="13">
* 目前支持的类型如下:
* 1.非空的日期型数据
* 2.可以空的日期型数据
* 3.非空的数字类型
* 4.可以为空的数字类型
* 5.非空的实数型
* 6.可以为空的实数型
* 7.非空的最大10位整数,2位小数的实数型
* 8.可以为空的最大10位整数,2位小数的实数型
* 9.非空的整型
* 10.可以为空的整型
* 11、非空字符串
* 12、可以为空字符串
* 13、非空合法的字符串:除去($*&'=<#>%^@~ )
* 14、可以为空的合法字符串:除去($*&'=<#>%^@~ )
* 15、不可以为空的Email
* 16、可以为空的Email
* 3、在提交数据的地方添加调用 validateForm(form对象) 如:validateForm(form1)
*/
function validateForm(theForm)
{ //对页面表单进行验证的函数
//定义正则表达式
var PatternsDict=new Object();
//1.非空的日期型数据
PatternsDict.date = /^[1-2]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[0-1])$/;
//2.可以空的日期型数据
PatternsDict.dateNull
=
/(^[1-2]\d{3}-(0?[1-9]|1[0-2]|3[0-1])-(0?[1-9]|[12][0-9]|3[0-1])$)|(^[1-2]\d{3}-([1-9]|1[0-2]|3[0-1])-([1-9]|[12][0-9]|3[0-1])$)|(^$)/;
//3.非空的数字类型
PatternsDict.num= /^\d+$/;
//4.可以为空的数字类型
PatternsDict.numNull = /^\d*$/;
//5.非空的实数型
PatternsDict.float= /^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$/;
//6.可以为空的实数型
PatternsDict.floatNull = /(^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$)|(^$)/;
//7.非空的最大10位整数,2位小数的实数型
PatternsDict.float10_2= /^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$/;
//8.可以为空的最大10位整数,2位小数的实数型
PatternsDict.float10_2Null = /(^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$)|(^$)/;
//9.非空的整型
PatternsDict.int= /^(0|\-?[1-9]{1}\d*)$/;
//10.可以为空的整型
PatternsDict.intNull = /(^(0|\-?[1-9]{1}\d*)$)|(^$)/;
//11、非空字符串
PatternsDict.string = /^[\S\s]+$/;
//12、可以为空字符串
PatternsDict.stringNull = /^[\S\s]*$/;
//13、非空合法的字符串:除去($*&'=<#>%^@~ )
PatternsDict.stringLegal = /^[^\$\*&'=<#>%\^@~\s]+$/;
//14、可以为空的合法字符串:除去($*&'=<#>%^@~ )
PatternsDict.stringLegalNull = /(^[^\$\*&'=<#>%\^@~\s]+$)|(^$)/;
//15、不可以为空的Email
PatternsDict.email
=
/^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$/;
//16、可以为空的Email
PatternsDict.emailNull
=
/(^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$)|(^$)/;
var elArr = theForm.elements; //elArr数组获得全部表单元素
var val;
var vname = "";
for(var i = 0; i < elArr.length; i++)
with(elArr[i])
{ //循环表单中每一个元素
var v = elArr[i].validator; //获取validator属性值
var cnname=elArr[i].cnname; //获取cnname属性值
var maxlength=elArr[i].maxlength; //获得长度
if(!v) continue; //如没有validator属性值,则跳出本次循环
if(!cnname) continue;
var thePat = PatternsDict[v]; //选择对应的正则表达式
var gotIt = thePat.exec(value); //运行对比
if(!gotIt) //如果符合相应的正则表达式(为true),则转为false,否则执行该if块。
{
if (v=="date") vname="日期(例如:2005-01-02)";
if (v=="dateNull") vname="日期(例如:2005-01-02),可以留空不填";
if (v=="num") vname="非空的数字类型值";
if (v=="numNull") vname="数字类型值";
if (v=="float") vname="非空的实数";
if (v=="floatNull") vname="实数";
if (v=="float10_2") vname="非空的最大10位整数,2位小数的实数型";
if (v=="float10_2Null") vname="最大10位整数,2位小数的实数型";
if (v=="int") vname="非空的整型数值";
if (v=="intNull") vname="整型数值";
if (v=="email") vname="非空的Eamil";
if (v=="emailNull") vname="Eamil";
if (v=="string") vname="非空";
if (v=="stringLegal") vname="非空合法的字符串。除『$*&'=<#>%^@~ 』";
if (v=="stringLegalNull") vname="合法的字符串。除『$*&'=<#>%^@~ 』";
}
else {
if(maxlength){
//这里主要针对textarea类型没有maxlength属性而设置的
val=value;
if (val.length>maxlength) {
vname="长度小于【 "+maxlength+" 】的字符串";
}
}
}
if (vname != ""){
//有错误,阻止提交
try
{
elArr[i].focus(); //此元素获得焦点
if (elArr[i].type=="text" ) elArr[i].select();
} catch(e) {}
alert("按要求必须输入 “" + cnname + "”的数据!\n数据必须为:" + vname );
return false; //阻止提交
}
}
return true;
}
//===============================================================================================
function validateInput(theInput)
{ //对页面表单进行验证的函数
//定义正则表达式
var PatternsDict=new Object();
//1.非空的日期型数据
PatternsDict.date = /^[1-2]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[0-1])$/;
//2.可以空的日期型数据
PatternsDict.dateNull
=
/(^[1-2]\d{3}-(0?[1-9]|1[0-2]|3[0-1])-(0?[1-9]|[12][0-9]|3[0-1])$)|(^[1-2]\d{3}-([1-9]|1[0-2]|3[0-1])-([1-9]|[12][0-9]|3[0-1])$)|(^$)/;
//3.非空的数字类型
PatternsDict.num= /^\d+$/;
//4.可以为空的数字类型
PatternsDict.numNull = /^\d*$/;
//5.非空的实数型
PatternsDict.float= /^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$/;
//6.可以为空的实数型
PatternsDict.floatNull = /(^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$)|(^$)/;
//7.非空的最大10位整数,2位小数的实数型
PatternsDict.float10_2= /^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$/;
//8.可以为空的最大10位整数,2位小数的实数型
PatternsDict.float10_2Null = /(^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$)|(^$)/;
//9.非空的整型
PatternsDict.int= /^(0|\-?[1-9]{1}\d*)$/;
//10.可以为空的整型
PatternsDict.intNull = /(^(0|\-?[1-9]{1}\d*)$)|(^$)/;
//11、非空字符串
PatternsDict.string = /^[\S\s]+$/;
//12、可以为空字符串
PatternsDict.stringNull = /^[\S\s]*$/;
//13、非空合法的字符串:除去($*&'=<#>%^@~ )
PatternsDict.stringLegal = /^[^\$\*&'=<#>%\^@~\s]+$/;
//14、可以为空的合法字符串:除去($*&'=<#>%^@~ )
PatternsDict.stringLegalNull = /(^[^\$\*&'=<#>%\^@~\s]+$)|(^$)/;
//15、不可以为空的Email
PatternsDict.email
=
/^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$/;
//16、可以为空的Email
PatternsDict.emailNull
=
/(^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$)|(^$)/;
var elArr = theInput; //elArr数组获得输入框元素
var val;
var vname;
if (elArr!=null)
{ //循环表单中每一个元素
var v = elArr.validator; //获取validator属性值
var cnname=elArr.cnname; //获取cnname属性值
if(!v) return true; //如没有validator属性值,则跳出本次循环
if(!cnname) return true;
var thePat = PatternsDict[v]; //选择对应的正则表达式
var gotIt = thePat.exec(elArr.value); //运行对比
//alert(elArr.value);
if(!gotIt) //如果符合相应的正则表达式(为true),则转为false,否则执行该if块。
{
if (v=="date") vname="日期(例如:2005-01-02)";
if (v=="dateNull") vname="日期(例如:2005-01-02),可以留空不填";
if (v=="num") vname="非空的数字类型值";
if (v=="numNull") vname="数字类型值";
if (v=="float") vname="非空的实数";
if (v=="floatNull") vname="实数";
if (v=="float10_2") vname="非空的最大10位整数,2位小数的实数型";
if (v=="float10_2Null") vname="最大10位整数,2位小数的实数型";
if (v=="int") vname="非空的整型数值";
if (v=="intNull") vname="整型数值";
if (v=="email") vname="非空的Eamil";
if (v=="emailNull") vname="Eamil";
if (v=="string") vname="非空";
if (v=="stringLegal") vname="非空合法的字符串。除『$*&'=<#>%^@~ 』";
if (v=="stringLegalNull") vname="合法的字符串。除『$*&'=<#>%^@~ 』";
elArr.focus(); //此元素获得焦点
if (elArr.type=="text" ) elArr.select();
alert("按要求必须输入 “" + cnname + "”的数据!\n数据必须为:" + vname );
return false; //阻止提交
}
}
return true;
}
分享到:
相关推荐
Javascript表单验证控件(Validator v1.05).rar
表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-...
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。
NULL 博文链接:https://vipshow.iteye.com/blog/1838930
《表单录入验证》 通过控件属性实现验证,包括生成星号标注、非法提示等; * 1、当录入框必填时,在控件后生成红色星号(设置star=false时不显示星号); * 2、根据控件属性判断需要录入的数据格式,如果非法则阻止...
jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...
Javascript表单验证控件(Validator v1.05).rar
表单验证控件(JS)--方便使用: 表单的验证一直是Web开发头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于UI设计与业务逻辑上。
Javascript表单验证控件(Validator v1.05).rar --------------------------------- 内含以下两个文件: Validator.chm(详细的使用帮助文档) validator.js(源代码,当然没有prototype.js强大,但最...
EXT 表单验证EXT 表单验证EXT 表单验证EXT 表单验证EXT 表单验证
实现HTML界面设计、布局的方法。 实现各种控件的使用方法。 实现对界面项目进行表单验证的方法。 实现表单标记,表单提交方式、编码方式等知识点。
修改后的附件 博文链接:https://dapeng.iteye.com/blog/136918
自己写的一个练习,基于jquery的表单验证控件,主要功能都有,但不很完整. 用法是在需要验证的input标签里加 validate 属性,内容是JSON格式的 比较简单,大家有需要可以拿去免费送,欢迎评论. 这个链接有图片效果和主要...
封装的js表单验证 demo目录里有js库(jskey_core)中提供的部分功能例子 其中themes目录里jskey_core中用到的样式,与js文件同级存放。 如果想不想使用日历类,则去掉jskey_core里【if(true)】【应该是第8行】及...
NULL 博文链接:https://qjoycn.iteye.com/blog/1513669