/*说明
-------------------------------------------------------------------------------------
函数名:InputCheck(InputEle)
InputEle 为要检测的元素,这个元素的class为格式化信息:输入类型|必要性|最小长度|最大长度
返回:message and false or true
格式化信息:
输入类型:
txt 1-文本(不能包含非法字符)
num 2-数字(0123456789)
val 3-数值(0123456789.)
tel 4-电话号码(020-83559078)
mob 5-手机号码(11位0123456789)
dat 6-日期(YYYY-MM-DD)
tim 7-时间(HH:MM:SS)
sel 8-选择(值为-1时表示未选择)
img 9-图像文件路径
eml 10-电子邮箱格式
idc 11-身份证
必要性:
y 1-必要
n 0-不一定
最小长度:0
最大长度:2147483647
eg:<input class="txt|y|0|10" > 表示输入为文本,且是必要的,最小长度为0,最大长度为10
---------------------------------------------------------------------------------
*/
function InputCheck(InputEle){
var ClassName=new String();//信息格式化:输入类型|必要性|最小长度|最大长度
var availChar=new String();
var invalChar=new String();
var InputValue=new String();
var alertTitle=new String();
var i=0;
try{ClassName=InputEle.myClass;}catch(e){return;}
if (typeof ClassName == "undefined" || ClassName == null) return true;
var arr=ClassName.split("|");
var InputType="txt"; //默认为文本
var Need="n"; //默认无限制
var minLen=0; //默认无限制
var maxLen=0; //默认无限制
var minVal="err";
var maxVal="err";
if (InputEle.disabled==true){
return true ;
}
if (arr.length>0){
InputType=arr[0];
}
if (arr.length>1){
Need=arr[1];
}
if (arr.length>2){
minLen=arr[2];
}
if (arr.length>3){
maxLen=arr[3];
}
if (arr.length>4){
minVal=arr[4];
}
if (arr.length>5){
maxVal=arr[5];
}
InputValue = InputEle.value;
alertTitle = InputEle.title;
//必要性检测
if (Need=="y"){
if(InputValue.length ==0){
alert(alertTitle + " 不能为空" );
try {
InputEle.focus();
InputEle.select();
}catch(ex){}
return false;
}
}
if(InputValue.length>0){//存在值时检测最小长度,最大长度
if(minLen!=0&&InputValue.length <minLen){
alert(alertTitle + " 不能小于 " + minLen.toString() +" 位");
InputEle.focus();
InputEle.select();
return false;
}
if(maxLen!=0&&InputValue.length >maxLen){
alert(alertTitle + " 不能大于 " + maxLen.toString() +" 位");
InputEle.focus();
InputEle.select();
return false;
}
}
switch(InputType){//输入类型
case "txt"://1-文本(不能包含字符"'%()")
/*invalChar="='~!@#$%^&*()";
for(i=0;i<invalChar.length;i++ ){
if(InputValue.indexOf(invalChar.substr(i,1))>=0){
alert (alertTitle + " 不能包含字符 " +invalChar);
InputEle.focus();
InputEle.select();
return false;
}
}*/
return true;
case "num"://2-数字(0123456789)
availChar="0123456789";
for(i=0;i<InputValue.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0){
alert (alertTitle + " 只能由字符 " +availChar +" 构成");
InputEle.focus();
InputEle.select();
return false;
}
}
return true;
case "val"://3-数值(0123456789.)
availChar="0123456789.";
for(i=0;i<InputValue.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0){
alert (alertTitle + " 只能由字符 " +availChar +" 构成");
InputEle.focus();
InputEle.select();
return false;
}
}
if(minVal!="err"&&parseFloat(InputValue)<parseFloat(minVal)&&InputValue.length>0){
alert (alertTitle + " 必须大于" +minVal.toString());
InputEle.focus();
InputEle.select();
return false;
}
if(maxVal!="err"&&parseFloat(InputValue)>parseFloat(maxVal)&&InputValue.length>0){
alert (alertTitle + " 必须小于" +maxVal.toString());
InputEle.focus();
InputEle.select();
return false;
}
return true;
case "tel"://电话号码(020-83559078)
availChar="0123456789-";
for(i=0;i<InputValue.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0){
alert (alertTitle + " 只能由字符 " +availChar +" 构成");
InputEle.focus();
InputEle.select();
return false;
}
}
return true;
case "mob"://5-手机号码(11位0123456789)
availChar="0123456789";
if (InputValue.length==0){return true;}
if (InputValue.length!=11){
alert (alertTitle + "只能是11位的数字构成");
InputEle.focus();
InputEle.select();
return false;
}
for(i=0;i<InputValue.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0){
alert (alertTitle + "只能是11位的数字构成");
InputEle.focus();
InputEle.select();
return false;
}
}
return true;
case "dat"://6-日期(YYYY-MM-DD)
var FormatFlag=0;
var ValidFlag=0;
var Index1=InputValue.indexOf("-");
var Index2=InputValue.lastIndexOf("-");
var ObjYear=InputValue.substring(0,4);
var ObjMonth=1;
var ObjDate=1;
var LastDate = new Date(2002,2,2,0,0,0,0);
if(InputValue.length!=0)
{
if (Index1==4)
{
if (InputValue.length==10 && Index2==7)
{
ObjMonth=InputValue.substring(5,7);
ObjDate=InputValue.substring(8,10);
FormatFlag=1;
}
if (InputValue.length==9 && Index2==7)
{
ObjMonth=InputValue.substring(5,7);
ObjDate=InputValue.substring(8,9);
FormatFlag=1;
}
if (InputValue.length==9 && Index2==6)
{
ObjMonth=InputValue.substring(5,6);
ObjDate=InputValue.substring(7,9);
FormatFlag=1;
}
if (InputValue.length==8 && Index2==6)
{
ObjMonth=InputValue.substring(5,6);
ObjDate=InputValue.substring(7,8);
FormatFlag=1;
}
}
if (FormatFlag!=1 || InputValue.indexOf(".")!=-1)
{
ValidFlag=1;
}
if( isNaN(ObjMonth) || ObjMonth>12 || ObjMonth<=0 )
{
ValidFlag=1;
}
LastDate.setYear(ObjYear);
LastDate.setMonth(ObjMonth);
LastDate.setDate(0); //Get the last date of the month.
if( isNaN(ObjDate) || ObjDate>LastDate.getDate() || ObjDate<=0 )
{
ValidFlag=1;
}
if( ValidFlag==1 )
{
alert ("日期格式为YYYY-MM-DD:日期无效!")
InputEle.focus();
InputEle.select();
return false;
}
if( isNaN(ObjYear) || ObjYear<1753 )
{
alert ("日期格式为YYYY-MM-DD:年份不能小于1753!")
InputEle.focus();
InputEle.select();
return false;
}
}
return true;
case "tim"://7-时间(HH:MM:SS)
if (InputValue.length!=0){
if (InputValue.length!=8){
alert ("时间格式为HH:MM:SS")
InputEle.focus();
InputEle.select();
return false;
}
if (InputValue.indexOf(":")!=2||InputValue.lastIndexOf(":")!=5 ){
alert ("时间格式为HH:MM:SS")
InputEle.focus();
InputEle.select();
return false;
}
var tmp=InputValue.substr(0,2)
availChar="0123456789";
for(i=0;i<tmp.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>24){
alert ("时间格式为HH:MM:SS")
InputEle.focus();
InputEle.select();
return false;
}
}
tmp=InputValue.substr(3,2)
for(i=0;i<tmp.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>60){
alert ("时间格式为HH:MM:SS")
InputEle.focus();
InputEle.select();
return false;
}
}
tmp=InputValue.substr(6,2)
for(i=0;i<tmp.length;i++ ){
if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>60){
alert ("时间格式为HH:MM:SS")
InputEle.focus();
InputEle.select();
return false;
}
}
}
return true;
case "sel"://选择(值为-1时表示未选择)
if (InputValue==-1){
alert("必须选择 "+ alertTitle);
InputEle.focus();
//InputEle.select();
return false;
}
return true;
case "img":// 图像文件
if (InputValue.length==0){
return true;
}
var img=document.createElement("img") ;
img.src=InputValue ;
if (img.fileSize<0){//不是有效的图像
alert(InputValue +"不是有效的图像");
InputEle.focus();
InputEle.select();
return false;
}
return true;
case "eml"://电子邮箱
if(Need=="n"&&i==0)
{
return true;
}
var pattern = /^([a-zA-Z0-9_-])+(\.([a-zA-Z0-9_-])+)*@([a-zA-Z0-9_-])+(\.([a-zA-Z0-9_-])+)+$/;
var flag = pattern.test(InputValue);
if(!flag) {
alert(" E - Mail格式不正确!")
InputEle.focus();
InputEle.select();
return false;
}
return true;
case "idc"://身份证
for(i=0;i<InputValue.length;)
i++;
if(i==15)
{
availChar="0123456789";
for(m=0;m<InputValue.length;m++ )
if(availChar.indexOf(InputValue.substr(m,1))<0)
{
alert ("15位"+alertTitle + " 只能由字符 " +availChar +" 构成");
InputEle.focus();
InputEle.select();
return false;
}
}
else if(i==18)
{
availChar1="0123456789xX";
availChar="0123456789";
for(m=0;m<17;m++ )
if(availChar.indexOf(InputValue.substr(m,1))<0)
{
alert ("前17位"+alertTitle + " 只能由字符 " +availChar +" 构成");
InputEle.focus();
InputEle.select();
return false;
}
if(availChar1.indexOf(InputValue.substr(17,1))<0)
{
alert (alertTitle + " 只能由字符 " +availChar1 +" 构成");
InputEle.focus();
InputEle.select();
return false;
}
}
else
{
if(Need=="n"&&i==0)
{
return true;
}
alert(" 身份证位数不正确!")
InputEle.focus();
InputEle.select();
return false;
}
return true;
}
}
function CheckAllInput(){
var f;
for(var i=0;i<document.all.length;i++){
try{
f=InputCheck(document.all.item(i));
}catch(e){}
if (f==false){
//event.returnValue=false;
return false;
}
}
return true;
}
function CheckSubmit(oFrm,sAction,sMethod){
//oFrm 为所提交From的对象
//sAction 为所提交From的action
//sMethod 为所提交From的method
event.returnValue=false;
if(CheckAllInput()!=false){
if (sAction!=""){oFrm.action=sAction;}
if (sMethod!=""){oFrm.method=sMethod;}
oFrm.submit();
}
}