JavaScript表单校验(checkItem)

 JavaScript表单校验

CharType,表单数据类型 "C" 为字符串,"N" 为数字,"D"为日期类型。
 * MaxLength(最大长度) 整型数字 0表示不限制最大长度
 * Precision(精度) 整型数字 表示保留小数位的长度,0表示是整数
 * DefiniteLengthMark(定长标志) 整型数字   0(定长不允许空)/1(不定长不可空)/2(不定长允许空)/3(定长允许空)
 * Describe(表单描述) 比如:电话号码,用户姓名等等,必须写
 
function checkFormItem(FormItemName,CharType,MaxLength,Precision,DefiniteLengthMark,Describe)
{
 var TValue;
 TValue=FormItemName.value;
 //得到文本框去掉头尾空格的值
 TValue=TValue.replace(/(^\s*)|(\s*$)/g, "");
 //去掉文本框头尾空格
 FormItemName.value=TValue;
 //允许空,只要文本框为空返回true
 if((DefiniteLengthMark==2||DefiniteLengthMark==3)&&(TValue.length==0))
 {
  return(true);
 }
 //不允许空,只要文本框为空返回false
 if((DefiniteLengthMark==0||DefiniteLengthMark==1)&&(TValue.length==0))
 {
  alert(Describe+"不允许为空!");
  return(false);
 }
 //判断字符串,长度和定长。

 if(CharType=="C")
 {
  if((DefiniteLengthMark==0||DefiniteLengthMark==3) && getStrLength(TValue)!=MaxLength)
  {
   alert(Describe+"规定长度是"+MaxLength+",请检查!");
   return(false);
  }
  if(MaxLength!=0&&getStrLength(TValue)>MaxLength && (DefiniteLengthMark==1||DefiniteLengthMark==2))
  {
   alert(Describe+"超过最大长度,允许的最大长度是"+MaxLength+"!");
   return(false);
  }

 }
 //判断数字类型,长度,精度,定长
 if(CharType=="N")
 {
  //检查整型数字
  if(Precision==0&&!isInteger(TValue))
  {
   alert(Describe+"项填写必须输入数字,请检查!");
   return(false);
  }
  if(Precision==0&&isInteger(TValue)&&MaxLength!=0&&(DefiniteLengthMark==0||DefiniteLengthMark==3)&&getStrLength(TValue)!=MaxLength)
  {
   alert(Describe+"项长度必须是"+MaxLength+",请检查!");
   return(false);
  }
  if(Precision==0&&isInteger(TValue)&&MaxLength!=0&&(DefiniteLengthMark==1||DefiniteLengthMark==2)&&getStrLength(TValue)>MaxLength)
  {

   alert(Describe+"项输入数字长度不能超过"+MaxLength+",请检查!");
   return(false);
  }
        if (TValue<0){
            alert(Describe+"项输入数字应大于等于0,请检查!");
            return(false);
        }
        //检查整型数字结束


  //检查实数
  if(Precision!=0&&!isFloat(TValue))
  {
   alert(Describe+"项必须输入数字,请检查!");
   return(false);
  }
  if(Precision!=0&&isFloat(TValue)&&MaxLength!=0&&(DefiniteLengthMark==0||DefiniteLengthMark==3)&&getStrLength(TValue)!=MaxLength)
  {

   alert(Describe+"项输入数字长度必须是"+MaxLength+",请检查!");
   return(false);
  }
  if(Precision!=0&&isFloat(TValue)&&MaxLength!=0&&(DefiniteLengthMark==1||DefiniteLengthMark==2)&&getStrLength(TValue)>MaxLength)
  {

   alert(Describe+"项输入数字长度不能超过"+MaxLength+",请检查!");
   return(false);
  }
  if(Precision!=0&&isFloat(TValue)&&!checkPrecision(TValue,Precision))
  {

   alert(Describe+"项输入数字应该保留"+Precision+"位小数,请检查!");
   return(false);
  }

 }
 //电话号码
 if(CharType=="P")
 {
  TValue = replacePhone(TValue);

  if(Precision==0&&!isInteger(TValue))
  {
   alert(Describe+"项填写必须是数字或 #号 或 -号 ,请检查!");
   return(false);
  }
  //return(true);
 }


 
 if(CharType=="D")
 {
  return(true);
 }

 return(true);
}

function replacePhone(orgStr)
{
 var changeName = "0";
 var indexOfs = 0;
 var infoStrMain;
 while (orgStr.indexOf ("#", 0) != -1)
 {
  indexOfs = orgStr.indexOf ("#", 0);
  infoStrMain = orgStr.substring (0, indexOfs)
         + changeName + orgStr.substring (indexOfs + 1);
  orgStr = infoStrMain;
 }

 while (orgStr.indexOf ("-", 0) != -1)
 {
  indexOfs = orgStr.indexOf ("-", 0);
  infoStrMain = orgStr.substring (0, indexOfs)
         + changeName + orgStr.substring (indexOfs + 1);
  orgStr = infoStrMain;
 }
 return orgStr;
}




function getStrLength(str)
{
 var winnt_chinese,sLength,i;
 var TestString="同方";
 if  (TestString.length==2){
  winnt_chinese =true;
 }else{
  winnt_chinese =false;
 }
 if (winnt_chinese){
     var l, t, c,kk;
            l = str.length;
            t = l;
            for (kk=0;kk<l;kk++)
            {
                c = str.charCodeAt(kk);
                if (c < 0){
                    c = c + 65536;
                }
                if (c > 255){
                    t = t + 1;
                }
            }
            sLength = t;
 }else{
     sLength = str.length;
 }
 return(sLength);
}



function isInteger(str)
{
 if(isNaN(str))
 {
  return(false);
 }
 else
 {
  if(str.search("[.*]")!=-1)
  {
   return(false);
  }
 }
 return(true);
}

function isFloat(str)
{
 //alert(isNaN(parseFloat(str)));
// return(!isNaN(parseFloat(str)));
 return(!isNaN(str));
}

function checkPrecision(str,n)
{

 var tureorfalse,i,PrecisionLength;
 PrecisionLength=0;
 if(!isNaN(parseFloat(str)))
 {
  for(i=0;i<str.length;i++)
  {
   if(str.charAt(i)==".")
   {
    PrecisionLength=str.length-i-1;
    break;
   }
  }

 }
 else
 {
  return(false);
 }
 if(PrecisionLength<=n)
  return(true);
 else
  return(false);

}
//跳转页面
function Gotopage(formname) {
   //alert(<%=intPageCount%>);
   //alert(window.dataform.page.value);
   if(checkFormItem(dataform.page,"C",4,0,1,"转到页数")){
     window.dataform.target="_self";
     window.dataform.action=formname;
     window.dataform.submit();
   }
}

猜你喜欢

转载自blog.csdn.net/ethan__xu/article/details/81536051