非常实用的js验证框架实现源码 附原理方法


Posted in Javascript onJune 08, 2016

本文为大家分享一个很实用的js验证框架实现源码,供大家参考,具体内容如下

关键方法和原理:

function check(thisInput) 方法中的
 if (!eval(scriptCode)) { 
     return false;
    }

调用示例:

<input type="text" class="text_field percentCheck" name="progress_payment_two" id="progress_payment_two" inputName="进度款2比例(%)" validate="isNumeric;notNull" maxLength="350" value="" />

验证时会自动调用:isNumeric 方法 和 notNull方法并返回验证的结果信息。

var ConfigValidateInfoType = "writeAlert"; //支持writeAlert和writePage,"writePage;writeAlert"
 
var rmTempStatusIsAlert = false;
 
var rmTempStatusIsFocus = false;
 
var beginValidate = true;
 
var set_All_Venus_Inputs_Default = true;
 
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } 
 
function checkAllForms(){
   
  var checkResult = true;
   
  rmTempStatusIsAlert = false;
  rmTempStatusIsFocus = false;
  setAllVenusInputsDefault();
 
  for (var i=0;i<document.forms.length;i++) {
    for (var j=0;j<document.forms[i].elements.length;j++) {
      var thisInput = document.forms[i].elements[j];
 
      if ( thisInput.type!="hidden" && thisInput.type!="button" && !( thisInput.id.indexOf("TF_")>=0 && thisInput.id.indexOf("_TF")>0 ) &&thisInput.clientWidth!=0&&thisInput.style&&thisInput.style.display!='none'){
        /*
        if(validateStr != null && validateStr.length > 0 ){
          if(thisInput.tagName == 'TEXTAREA' && srcstr != '') {
            srcstr = replaceEnter(srcstr);
            if( thisInput.maxLength != null && thisInput.maxLength > 0 ){
              if (getStrLength(srcstr) > thisInput.maxLength){
                writeValidateInfo(thisInput, "焦点处输入长度超长\n请确保输入长度在" +frm.maxLength+"以内");
                return false;
              }
            }
          }
        }
        */
        if(thisInput.id&&thisInput.id.indexOf("supplier_id_ref_")!=-1&&document.getElementById("unionDiv")&&document.getElementById("unionDiv").style.display=="none"){
          continue;
        }
         
        var rtValue = check(thisInput);
        if(checkResult && rtValue == false) {
          checkResult = false;
          break;
        }
      }
    }
  }
  return checkResult;
}
 
function check(thisInput) {
   
  var validateStr = thisInput.validate;
  if(validateStr == null) {
    return true;
  }
  var inputValue = thisInput.value;
  if ( beginValidate ) {
    var validateTemp = new Array(); 
    validateTemp = validateStr.split(';');
    for (var i=0;i<validateTemp.length;i++) {
      if(validateTemp[i].length == 0) {
        continue;
      }
      s = replaceSingleQuote(inputValue);
      try{
        var scriptCode = "javascript:" + validateTemp[i]; //"javascript:" + validateTemp[i] + "('" + s + "', " + "thisInput)"
        if(validateTemp[i].indexOf("(") < 0 || validateTemp[i].indexOf(")") < 0) {
          scriptCode = "javascript:" + validateTemp[i] + "(s,thisInput)"
        }
        if (!eval(scriptCode)) { 
          return false;
        }
      } catch(e) {
        alert("校验函数"+validateTemp[i]+"有异常,请检查!" + "\n" + e.message );
        return false;
      }
    }
  }
  return true;
}
 
function setAllVenusInputsDefault() {
  var frmslen = document.forms.length;
  for (var i=0;i<frmslen;i++) {
    var inslen = document.forms[i].elements.length;   
    for (var j=0;j<inslen;j++) {
      var frm = document.forms[i].elements[j]
      if ( frm.type!="hidden" && frm.type!="button" && !( frm.id.indexOf("TF_")>=0 && frm.id.indexOf("_TF")>0 ) ){
        if(frm.validate != null) {
          setVenusInputDefault(frm);
          writeValidateInfoAfterObject("", frm);
        }
      }
    }
  }
  return true;
}
 
function setVenusInputDefault(_frm) {
  _frm.style.borderStyle="";
  _frm.style.borderColor="";
  if( _frm.value != null ){
    _frm.style.backgroundColor = "";
    _frm.style.color = "";
  }
}
 
 
function replaceEnter(_str) {
  /**替换换行回车字符**/
  var str = _str;
 
  str = str.replace('\n','')
  str = str.replace('\r','')
   
  //alert(str.indexOf('\n'))
   
  if(str.indexOf('\n')!=-1 &&str.indexOf('\r')!=-1) { 
    return replaceEnter(str);
  } else {
    return str;
  }
}
 
function replaceSingleQuote(_str) {
  /**替换换行回车字符**/
  var str = _str;
  str = str.replace('\\','\\u005C');
  str = str.replace('\'','\\u0027'); 
  str = str.replace('(','\\u0028');
  str = str.replace(')','\\u0029');
  str = str.replace('\"','\\u0022');
  str = str.replace(';','\\u0038');
 
  //str = Jtrim(str);
 
  return str;
}
 
function isContains(_validateStr,_validator) {
  for (var i=0;i<_validateStr.length;i++)
  {
    if(_validateStr[i] == _validator)
      return true;
  }
   
  return false;
}
 
function writeValidateInfo(info, thisObj) {
  var inputName = getInputNameFromObject(thisObj);
  info = inputName + "的输入有误!\n" + info;
  if(ConfigValidateInfoType.indexOf("writePage") >= 0) {
    writeValidateInfoAfterObject(info, thisObj);
  }
  if(ConfigValidateInfoType.indexOf("writeAlert") >= 0) {
    writeValidateInfoAlert(info, thisObj);
  }
  if(!rmTempStatusIsFocus) {
    setVenusInputError(thisObj);
    rmTempStatusIsFocus = true;
  }
}
 
function setVenusInputError(_frm) {
  try {
    //_frm.click(); // click会导致文件上传错误
    _frm.focus();
    //由于SELCET不支持内容选择,且不用内容选择,所以特殊处理,防止报错
    //修改:李岳 2009-11-12
    if(_frm.tagName!="SELECT"){
      _frm.select();
    }
    _frm.style.borderStyle="dashed";
    _frm.style.borderColor="rgb(255,50,0)";
    if( _frm.value != null && _frm.value.length > 0 ){
      _frm.style.backgroundColor = "highlight";
      _frm.style.color = "white";
    } 
  } catch(e) {
    alert(e.message);
  }
}
 
function writeValidateInfoAlert(info, thisObj) {
  if(!rmTempStatusIsAlert) {
    alert(info);
    rmTempStatusIsAlert = true;
  }
}
 
function writeValidateInfoAfterObject(info, thisObj) { //写校验信息
  var validateInfoObj = null;
  thisObj = getValidatePosition(thisObj);
  if(thisObj.nextSibling != null && thisObj.nextSibling.nextSibling != null
    && thisObj.nextSibling.tagName != null && thisObj.nextSibling.tagName.toUpperCase() == "FONT"
    && thisObj.nextSibling.nextSibling.tagName.toUpperCase() == "SPAN" && thisObj.nextSibling.nextSibling.className == "font_remain_prompt") {
    validateInfoObj = thisObj.nextSibling.nextSibling;
  } else {
    thisObj.insertAdjacentHTML("afterEnd", "<font></font><span class=font_remain_prompt></span>");
    validateInfoObj = thisObj.nextSibling.nextSibling;
  }
  if(validateInfoObj.innerHTML.length > 0 || info.length > 0) {
    validateInfoObj.innerHTML = info;
  }
}
 
function getValidatePosition(thisObj) {
  if(thisObj.nextSibling != null && thisObj.nextSibling.className == "refButtonClass") {
    thisObj = getValidatePosition(thisObj.nextSibling);
  } else if(thisObj.nextSibling != null && thisObj.nextSibling.type == "hidden"){
    thisObj = getValidatePosition(thisObj.nextSibling);
  }
  return thisObj;
}
 
function getInputNameFromObject(thisInput) {
  var inputName = thisInput.inputName ;
  if ( inputName == null || inputName.length == 0 ){
    inputName = thisInput.name;
    if ( inputName == null || inputName.length == 0 ){
      inputName = "";
    }
  }
  return inputName;
}
 
function getStrLength(str){
  var len = 0;
  for(var i=0;i<str.length;i++){
    if (str.charCodeAt(i) > 255)
      len += 2;
    else
      len ++;
  }
  return len;
}
 
/**********************************************************************
*ranmin validate
***********************************************************************/
function notNull(s, thisInput) { //不能为空
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if (s.length == 0){
    writeValidateInfo("不能为空或空格!", thisInput);
    return false;
  } 
  var s = Jtrim(s);  
  if ( s.length == 0){
    writeValidateInfo("不能为空或空格!", thisInput);
    return false;
  } 
  return true;
}
 
function isJine(s, thisInput) { //不能为空
   var a=/^[0-9]*(\.[0-9]{1,2})?$/;
   if(!a.test(s)){
     writeValidateInfo("有非法字符或者小数点位数超过两位", thisInput);
     return false;
  }else{
     return true;
   }
}
 
function isMobile(s, thisInput) { //是手机号码:必须以数字开头,除数字外,可含有“-” 
  //去掉空格
 
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
  var obj=new Array()
  obj[0]="13";
  obj[1]="14";
  obj[2]="15";
  obj[3]="18";
   
  if(s != null ){
    if(s.length != 11){
      writeValidateInfo('请输入合法的手机号码!', thisInput);
      return false;
    }
    var mob = 0;
    for ( var int = 0; int < obj.length; int++) {
      if(s.substring(0,2) == obj[int]){
        mob = mob+1;
      }
    }
    if(mob == 0){
      writeValidateInfo('请输入合法的手机号码!', thisInput);
      return false;
    }
  }
  var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; 
  if (!patrn.exec(s)) {
    writeValidateInfo('请输入合法的手机号码!', thisInput);
    return false;
  }    
 
  return true;
}
 
function isPostalCode(s, thisInput) { //是邮政编码
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
     
  var patrn=/^[a-zA-Z0-9 ]{3,12}$/; 
  if (!patrn.exec(s)) {
    writeValidateInfo('请输入合法的邮政编码!', thisInput);
    return false;
  }
 
  return true;
} 
 
 
function isTel(s,thisInput) { //是电话普通电话、传真号码:可以“+”开头,除数字外,可含有“-” 
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
   
  var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; 
  if (!patrn.exec(s)) {
    writeValidateInfo('请输入合法的电话号码!',thisInput);
    return false
  } 
 
  return true;
}
 
 
function isTelForFax(s,thisInput) { //是电话普通电话、传真号码:可以“+”开头,除数字外,可含有“-” 
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
  var patrn=/^(\d){3,4}[-](\d){7,8}$/; 
  if (!patrn.exec(s)) {
    writeValidateInfo('请输入合法的座机号码,例如:010-88888888!',thisInput);
    return false
  } 
 
  return true;
}
 
 
function isFax(s,thisInput) { //是电话普通电话、传真号码:可以“+”开头,除数字外,可含有“-” 
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
  var patrn=/^(\d){3,4}[-](\d){7,8}$/; 
  if (!patrn.exec(s)) {
    writeValidateInfo('请输入合法的传真号码,例如:010-88888888!',thisInput);
    return false
  } 
 
  return true;
}
 
function isChinese(s,thisInput) { //是中文
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
   
  var ret = ischinese(s);
  if(!ret){
    writeValidateInfo("请输入中文", thisInput);
    return ret;
  }
 
  return ret;
}
 
function notChinese(s,thisInput) { //不含中文
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
     
  var ret = ischinese(s);
   
  if(ret){
    writeValidateInfo("不能输入中文",thisInput);
    return false;
  }
 
  return true;
}
 
function isNum(s,thisInput) { //是数字 
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
   
  var digits = "0123456789";
  var i = 0;
  var sLength = s.length;
 
  while ((i < sLength)) {
    var c = s.charAt(i);
    if (digits.indexOf(c) == -1){
       
      writeValidateInfo ("请输入数字!",thisInput);   
      return false;
    }
    i++;
  }
  return true;
}
 
function isNumBigtoZero(s,thisInput) { //是数字 
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
   
  var digits = "0123456789";
  var i = 0;
  var sLength = s.length;
 
  while ((i < sLength)) {
    var c = s.charAt(i);
    if (digits.indexOf(c) == -1){
       
      writeValidateInfo ("请输入数字!",thisInput);   
      return false;
    }
    i++;
  }
  try{
    if(thisInput.value<=0){
      writeValidateInfo ("输入数值必须大于零!",thisInput);
      return false;
    }
  }catch(e){
     
  }
  return true;
}
function isEmail(s,thisInput) { //是电子邮件
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
 
  if (s.length > 100) {
    writeValidateInfo("email地址长度不能超过100位!",thisInput);
    return false;
  }
 
  var regu = /^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$/;
 
  if (regu.exec(s)) {   
    return true;
  } else {
    writeValidateInfo ("请输入有效合法的E-mail地址 !",thisInput);
    return false;
  }
}
 
function isIP() { //是IP
     
  var patrn=/^[0-9.]{1,20}$/; 
  if (!patrn.exec(s)){
    writeValidateInfo('请输入IP值!',thisInput);
    return false
  } 
  return true;
}
 
 
/**********************************************************************
*Venus Web JavaScript Code:HTC 校验notNull
***********************************************************************/
function notNullWithoutTrim(s,thisInput) { //是""
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if ( s.length == 0){
    writeValidateInfo('请输入,该项不能为空!',thisInput);
    return false;
  } 
  return true;
}
 
function isInteger(str,thisInput) { //是整数
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  str=str.trim();
   
  if(str.length ==0){
    return true;
  }
   
  var reg = "0123456789";
  for (var i=0;i<str.length;i++){
    var m = str.charAt(i);
    if (reg.indexOf(m) == -1) {
      writeValidateInfo('请输入整数!',thisInput);
      return false;
    }
  }
  return true;
}
function isNormalStrOnWeb(s,thisInput) { //是普通字符(非html标记)
  if (s.substring(0,1) == "<" || s.substring(0,1) == "\>" || s.substring(0,1) == " "){
      writeValidateInfo("焦点处不能以<或\>或空格开头",thisInput);
      return false;
  }
 
  if (!HoldCode(s)){
    writeValidateInfo("焦点处不能输入全角\"·\"/\"—\"/\"——\"字符",thisInput);
    return false;
  }
  if (s.trim().length > 0){
    if (s.indexOf("\"") > -1){
      writeValidateInfo("焦点处不能输入双引号!!",thisInput);
      return false;
    }
    if (s.indexOf("\'") > -1){
      writeValidateInfo("焦点处不能输入单引号",thisInput);
      return false;
    }
    if (s.indexOf("\\") > -1){
      writeValidateInfo("焦点处不能输入 '\\' ",thisInput);
      return false;
    }
  }
  return true;
}
 
 
 
 
//基本函数列表
function Jtrim(str) { //去空隔函数
  var i = 0;
  var len = str.length;
  if ( str == "" ) return( str );
  var j = len -1;
  var flagbegin = true;
  var flagend = true;
  while ( flagbegin == true && i< len) {
    if ( str.charAt(i) == " " ) {
      i=i+1;
      flagbegin=true;
    } else {
      flagbegin=false;
    }
  }
 
  while (flagend== true && j>=0) {
    if (str.charAt(j)==" ") {
      j=j-1;
      flagend=true;
    } else {
      flagend=false;
    }
  }
 
  if ( i > j ) 
    return ("");
 
  var trimstr = str.substring(i,j+1);
  return trimstr;
}
 
function isNumber(s) { //数字判断函数
  s=s.trim();
  if(s.length ==0){
    return true;
  }
   
  var digits = "0123456789";
  var i = 0;
  var sLength = s.length;
   
  while ((i < sLength)) {
    var c = s.charAt(i);
    if (digits.indexOf(c) == -1) {
      return false;    
    }
    i++;
  }
  return true;
}
 
function ischinese(s) { //判断是否中文函数
  var ret=true;
  for(var i=0;i<s.length;i++)
    ret=ret && (s.charCodeAt(i)>=10000);
  return ret;
}
 
/**********************************************************************
*Venus Web JavaScript Code:HTC 表单通用检验(完善中)
***********************************************************************/
function HoldCode(str){
  for(var i=0;i<str.length;i++){
    if (str.charCodeAt(i) == 8212 || str.charCodeAt(i) == 183){
      return false;
    }
  }
  return true;
}
 
 
function validateForm(current_form) {
  for (var i=0;i<current_form.length;i++){
    if (current_form[i].type =="text" || current_form[i].type == "radio"){
      if (current_form[i].value.substring(0,1) == "<" || current_form[i].value.substring(0,1) == "\>" || current_form[i].value.substring(0,1) == " "){
          alert("焦点处不能以<或\>或空格开头");
          current_form[i].focus();
          current_form[i].select();
          return false;
      }
 
      if (getStrLength(current_form[i].value) > current_form[i].maxLength){
          alert("焦点处输入长度超长\n请确保输入长度在" +current_form[i].maxLength+"以内");
          current_form[i].focus();
          current_form[i].select();
          return false;
      }
      if (!HoldCode(current_form[i].value)){
        alert("焦点处不能输入全角\"·\"/\"—\"/\"——\"字符");
        current_form[i].focus();
        current_form[i].select();
        return false;
      }
      if (!is_empty(current_form[i].value)){
        if (current_form[i].name == "scriptDefine"){
          return true;
        }
        if (current_form[i].value.indexOf("\"") > -1){
          alert("焦点处不能输入双引号");
          current_form[i].focus();
          current_form[i].select();
          return false;
        }
      }
    }
  }
  return true;
}
 
   
function checkNumber(s, inputName) {
  try{
    //去掉空格
    try{
      thisInput.value=thisInput.value.trim();
    }catch(e){
       
    }
    s=s.trim();
     
    if(s.length ==0){
      return true;
    }
     
    var thisObj = event.srcElement;
    var maxLength = thisObj.integerDigits;
    var scale = thisObj.decimalDigits;
    return checkNumberImpl(s, maxLength, scale);
  }catch(e){
  }
}
 
function checkNumberImpl(s, maxLength, scale) { //校验运行里程,小数,整数部分最多为10-2
  if(s == "") {
    return true;
  }
  if(scale == undefined) {
    scale = 0;
  }
  if(maxLength == undefined) {
    maxLength = 38;
  }
  if(!isFloatNumber(s)) {
    return false;
  }
  if(s.indexOf(".") >0) {
    if(s.indexOf(".") <= maxLength && (Math.round(s*(pow(10,scale)))<(pow(10,(maxLength + scale))))) {
      return true;
    } else {
      alert("整数部分最大为" + (maxLength - scale) + "位!");
      return false;
    }
  } else {
    if(s.length <= maxLength) {
      return true;
    } else {
      alert("整数部分最大为" + maxLength + "位!!");
      return false;
    }
  }
}
 
function isFloatNumber(s,inputName) { //判断是否
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
   
  var digits = "0123456789.";
  var i = 0;
  var sLength = s.trim().length;
   
  while ((i < sLength)) {
    var c = s.charAt(i);
    if (digits.indexOf(c) == -1){
      writeValidateInfo("请输入有效数字!", inputName);    
      return false;
    }
    i++;
  }
  if(s.indexOf(".") != s.lastIndexOf(".")) {
    alert("小数点不对,请输入有效数字!");
    return false;
  } else {
    return true;
  }
}
 
function isSearch(s,thisInput) { //不能输入非法字符
  if(s.length == 0 ) 
    return true;
  var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,5000}$/; 
  var patrn2 = /[^\{\|\.\\,<>"'_}/]/;
  if (!patrn.exec(s) || !patrn2.exec(s)){
    writeValidateInfo('输入项中含非法字符,请重新输入!',thisInput);
    return false;  
  }
  return true ;
}
 
 
//===============================================================================================
/**
 * 验证数字(正整数或者包含小数的数字).
 */
function isNumeric(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^\d+(\.\d+)?$/;
 
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入正整数或者小数!", thisInput);
    return false;
  }
 
  return true;
}
 
 
/**
 * 验证数字(正整数).
 */
function checkInt(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^[0-9]\d*$/;
 
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入正整数!", thisInput);
    return false;
  }
 
  return true;
}
/**
 * 验证数字(整数位最大为10位,可以带小数)
 */
function validateNumericAndLength(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^\d{1,10}(\.\d+)?$/;
 
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入正整数或者小数(整数位只能有10位)!", thisInput);    
    return false;
  }
 
  return true;
}
 
/**
 * 验证数字(18,2)
 */
function isNum18p2(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
  var reg = /^(-)?\d{1,16}(\.\d{1,2})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多16位,小数位最多2位)!", thisInput);   
    return false;
  }
  return true;
}
 
/**
 * 验证数字(18,4)
 */
function isNum18p4(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
  var reg = /^(-)?\d{1,14}(\.\d{1,4})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多14位,小数位最多4位)!", thisInput);   
    return false;
  }
  return true;
}
 
 
/**
 * 验证数字(5,2)
 */
function isNum5p2(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
  var reg = /^(-)?\d{1,3}(\.\d{1,2})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多3位,小数位最多2位)!", thisInput);    
    return false;
  }
  return true;
}
 
/**
 * 验证Email.
 */
function checkEmail(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
 
  if (!reg.test(value)) {
    writeValidateInfo ("请输入正确的Email地址!", thisInput);
    return false;
  }
 
  return true;
}
 
/**
 * 验证身份证(15位或者18位身份证).
 */
function checkIdCard(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^\d{15}(\d{2}[A-Za-z0-9])?$/;
 
  if (!reg.test(value)) {
    writeValidateInfo ("请输入正确的身份证号码!", thisInput);
    return false;
  }
 
  return true;
}
 
/**
 * 验证邮政编码.
 */
function checkPostCode(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^[0-9]\d{5}$/;
 
  if (!reg.test(value)) {
    writeValidateInfo ("请输入正确的邮政编码!", thisInput);
    return false;
  }
 
  return true;
}
 
/**
 * 验证是否为中文字符.
 */
function checkChinese(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^[\u0391-\uFFE5]+$/;
 
  if (!reg.test(value)) {
    writeValidateInfo ("请输入中文字符!", thisInput);
    return false;
  }
 
  return true;
}
 
/**
 * 验证是否为非法字符.
 */
function checkInvalidString(value, thisInput) {
  var reg = /^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]*$/;
 
  if (!reg.exec(value)) {
    writeValidateInfo ("输入的字符中包含特殊字符,请重新输入!", thisInput);
    return false;
  }
 
  return true;
}
 
function checkMoney(s, inputName) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  s=s.trim();
   
  if(s.length ==0){
    return true;
  }
   
  if(s==""){
    writeValidateInfo("金额不能为空!", inputName);
    return false;
  }
  if(isFloatNumber(s,inputName)==false){
    writeValidateInfo("非法金额值!", inputName);
    return false;
  }
  var maxLength = 10;
  var scale =2;
  return checkNumberImpl(s, maxLength, scale,inputName);
}
 
/**
 * 校验分数是否在0-100
 */
function isAdultAge(str,thisInput) { //是整数
   //去掉空格
   try{
     thisInput.value=thisInput.value.trim();
   }catch(e){
     
   }
   str=str.trim();
   
   if(str.length ==0){
     return true;
   }
 
  if(parseInt(str)<0 || parseInt(str)>100){
    writeValidateInfo('请输入合法分数(0--100之间)!',thisInput);
    return false;
  }
  return true;
}
 
  /**
 * 6 级强度设置(数字、大写字母、小写字母、特殊字符、长度>=6、长度>=10)
 * 如果密码为空,返回 0
 */
function pwdStrength(pwd) {
  var sum = [0, 0, 0];
  for (var i=0; i<pwd.length; i++) {
    var c = pwd.charCodeAt(i);
    if (c >=48 && c <=57) //数字
      sum[0] = 1;
    else if (c >=65 && c <=90) //大写字母
      sum[1] = 1;
    else if (c >=97 && c <=122) //小写字母
      sum[1] = 1;
    else //特殊字符
      sum[2] = 1; 
  }
  var level = sum[0] + sum[1] + sum[2] ;
  if (pwd.length >= 8) level++;
  return level;
}
function isBiggerZero(value, thisInput) { //已经是数字,然后必须大于0
  if(thisInput.value<=0){
    writeValidateInfo('请输入一个大于零的数字!',thisInput);
    return false;
  }
  return true;
}
 
function isNonnegative(value, thisInput) { 
  if(thisInput.value<0){
    writeValidateInfo('请输入一个非负的数字!',thisInput);
    return false;
  }
  return true;
}
 
/**
 * 验证数字(20,6)
 */
function isNum20p6(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
 
  var reg = /^(-)?\d{1,14}(\.\d{1,6})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多14位,小数位最多6位)!", thisInput);   
    return false;
  }
  return isBiggerZero(value, thisInput);
}
 
/**
 * 验证数字(18,6)
 */
function isNum18p6(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
 
  var reg = /^(-)?\d{1,12}(\.\d{1,6})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多12位,小数位最多6位)!", thisInput);   
    return false;
  }
  return isBiggerZero(value, thisInput);
}
 
function isNonnegative20p6(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
   
 
  var reg = /^(-)?\d{1,14}(\.\d{1,6})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多14位,小数位最多6位)!", thisInput);   
    return false;
  }
  return isNonnegative(value, thisInput);
}
 
/**
 * 验证数字(20,4)
 */
function isNum20p4(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){}
  value=value.trim();
  if(value.length ==0){
    return true;
  }
 
  var reg = /^(-)?\d{1,16}(\.\d{1,4})?$/;
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入数字(整数位最多16位,小数位最多4位)!", thisInput);   
    return false;
  }
  return isBiggerZero(value, thisInput);
}
 
/**
 * 供应商输入的单批次保证金金额只能是正整数并且只能精确到百位
 */
function isDPCBZJ(value, thisInput) {
  //去掉空格
  try{
    thisInput.value=thisInput.value.trim();
  }catch(e){
     
  }
  value=value.trim();
   
  if(value.length ==0){
    return true;
  }
   
  var reg = /^[1-9]\d*00$/;
 
  if (!reg.test(value)) {     
    writeValidateInfo ("请输入正确的保证金金额!", thisInput);
    return false;
  }
 
  return true;
}
 
//报表招标年度起始年度不能大于终止年度的判断
function validateYear(startYear,endYear,flag) {
  if(startYear > endYear){
    if(flag==1){
      alert("起始月份不能大于终止月份");
       return false;
     }else{
      alert("招标起始年度不能大于终止年度");
      return false;
     }
  }
  return true;
}

以上就是本文的全部内容,希望对大家学习JavaScript程序设计有所帮助。

Javascript 相关文章推荐
一些相见恨晚的 JavaScript 技巧
Apr 25 Javascript
一样的table?不一样的table(可编辑状态table)
Sep 19 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
js动态控制table的tr、td增加及删除的具体实现
Apr 30 Javascript
JQuery教学之性能优化
May 14 Javascript
jquery实现炫酷的叠加层自动切换特效
Feb 01 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
Nov 02 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
Sep 01 Javascript
json的使用小结
Jun 08 #Javascript
使用Web Uploader实现多文件上传
Jun 08 #Javascript
浅析JSONP技术原理及实现
Jun 08 #Javascript
JSONP原理及简单实现
Jun 08 #Javascript
Javascript必知必会(四)js类型转换
Jun 08 #Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 #Javascript
JavaScript必知必会(二) null 和undefined
Jun 08 #Javascript
You might like
笑谈配置,使用Smarty技术
2007/01/04 PHP
PHPCMS的使用小结
2010/09/20 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
JS打印组合功能
2016/08/04 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
Python抓取手机号归属地信息示例代码
2016/11/28 Python
python在非root权限下的安装方法
2018/01/23 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python实现TCP通信的示例代码
2019/09/09 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
结婚喜宴主持词
2014/03/14 职场文书