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

本文为大家分享一个很实用的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程序设计有所帮助。

(0)

相关推荐

  • jquery.cvtooltip.js 基于jquery的气泡提示插件

    序 1.插件名cvtooltip中的cv是ChinaValue的首字母缩写,而tooltip就是提示啦. 2.适用于新功能的提示,引导用户的提示,即时类消息的提示,操作失败提示(操作成功了也没人拦着)等等等,使用css实现,不附带任何图片文件. 3.目前发现的问题,在Chorme中表现的不给力,是由于Chrome对页面的解析与IE和FF不同,导致jquery的position或者offset返回值不同. 4.该插件依然是练习之作,一人之力,错误难免. 实例演示 1.载入页面的同时,气泡提示也显示

  • jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】

    本文实例讲述了jQuery悬停文字提示框插件jquery.tooltipster.js用法.分享给大家供大家参考,具体如下: 运行效果截图如下: index.html页面: <!DOCTYPE html> <html lang="en"> <head> <title>jQuery Tooltips悬停文字提示框效果</title> <meta charset="utf-8" /> <lin

  • js验证框架之RealyEasy验证详解

    使用Really_easy_field_validation_with_Prototype进行表单验证,具体内容如下 1.第一步当然是先引入js和css文件. <link href="${ ctx}/skin/css/validation.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="${ c

  • 手把手教你自己写一个js表单验证框架的方法

    在表单程序中,在页面上需要很多的Js代码来验证表单,每一个field是否必须填写,是否 只能是数字,是否需要ajax到远程验证,blablabla. 如果一个一个单独写势必非常的繁琐,所以我们的第一个目标就是构建一个类似DSL的东西, 用表述的语句而非控制语句来实现验证. 其次一个个单独写的话还有一个问题就是必须全部验证通过才能提交,但是单独验证会因为 这个特征而增加很多额外的控制代码,且经常会验证不全面.所以第二个目标就是能够全面 的整合整个验证的过程. 最后不能是一个无法扩展的一切写死的实现

  • 使用JS组件实现带ToolTip验证框的实例代码

    本组件依赖JQuery 本人测试的JQuery 是1.8, 兼容IE8,IE9,谷歌,火狐等. //验证输入框 function ValidateCompent(input){ var _input = $(input).clone(true); _input.css("height",$(input).css("height")); _input.css("width", $(input).css("width")); va

  • 轻量级 JS ToolTip提示效果

    鼠标经过出现的提示效果,比title更漂亮,可订制.JS: 复制代码 代码如下: //---------------------------tooltip效果 start----------------------------------- //获取某个html元素的定位 function GetPos(obj){ var pos=new Object(); pos.x=obj.offsetLeft; pos.y=obj.offsetTop; while(obj=obj.offsetParent

  • ToolTip 通过Js实现代替超链接中的title效果

    自定义Tooltip特效 body ul { list-style: none; } body li { margin: 60px; } div { border: 1px solid #CCC; padding: 10px; background: #dff5ff; margin-left: 30px; } function initEvent() { var links = document.getElementsByTagName("a"); for (var i = 0; i

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

    本文为大家分享一个很实用的js验证框架实现源码,供大家参考,具体内容如下 关键方法和原理: function check(thisInput) 方法中的 if (!eval(scriptCode)) { return false; } 调用示例: 复制代码 代码如下: <input type="text" class="text_field percentCheck" name="progress_payment_two" id="

  • js验证框架实现代码分享

    本文实例为大家分享了js验证框架,很实用,供大家参考,具体内容如下 1.关键方法和原理: function check(thisInput) 方法中的 if (!eval(scriptCode)) { return false; } 2.调用示例: 复制代码 代码如下: <input type="text" class="text_field percentCheck" name="progress_payment_two" id=&quo

  • 6款经典实用的jQuery小插件及源码(对话框/提示工具等等)

    jQuery是一款当之无愧的JS开源框架,凭借其小巧实用占领了很大的开发市场,jQuery另外一个优势就是拥有丰富多彩的插件,这些插件可以帮助你简化很多的开发过程.下面介绍的6款实用jQuery小插件及源码,希望大家喜欢. 1.jQuery智能单词提示工具 这是一款可以根据当前输入智能提示单词的插件,效果很棒. 在线演示 /源码下载 2.CSS3实现的Photoshop按钮效果 这是用jQuery和CSS3实现的Photoshop按钮效果. 在线演示 /源码下载 3.jQuery自定义确认对话框

  • 微前端框架qiankun源码剖析之下篇

    目录 引言 四.沙箱隔离 4.1 JS隔离 1. Snapshot沙箱 2. Legacy沙箱 3. Proxy沙箱 4.2 CSS隔离 1. ShadowDOM 2. Scoped CSS 五.通信方式 六.结语 引言 承接上文  微前端框架qiankun源码剖析之上篇 注意: 受篇幅限制,本文中所粘贴的代码都是经过作者删减梳理后的,只为讲述qiankun框架原理而展示,并非完整源码.如果需要阅读相关源码可以自行打开文中链接. 四.沙箱隔离 在基于single-spa开发的微前端应用中,子应用

  • 多个上传文件用js验证文件的格式和大小的方法(推荐)

    html部分: <dsp:form action="${originatingRequest.requestURI}" method="post" enctype="multipart/form-data"> <dsp:input type="file" bean="ReturngoodsFormHandler.uploadedFile1" id="uploadedFile1&q

  • Android Volley框架使用源码分享

    过去在Android上网络通信都是使用的Xutils 因为用它可以顺道处理了图片和网络这两个方面,后来发觉Xutils里面使用的是HttpClient  而Google在6.0的版本上已经把HttpClient废除了,所以开始寻找新的网络框架,okhttp也用过,但是它是在作用在UI线程,使用起来还需要用handler 所以就先用着Volley框架了.  这里我先分析下Volley框架的简单网络请求的源码. 使用Volley请求网络数据的简单过程: RequestQueue queue = Vo

  • springboot默认日志框架选择源码解析(推荐)

    背景: 今天新生成一个springboot项目,然而启动日志,还有mybatis的详细日志无法打印出来,自写程序中打印的日志可以输出:网上找了很多资料,都没法解决问题:于是决定跟一下源码,弄清springboot日志相关的逻辑. 环境配置:macbook: intellij idea community edition 2020.03 : gradle 6.8.3 jdk1.8 : gradle引用包如下: dependencies { compile "com.alibaba:fastjson

  • solid.js响应式createSignal 源码解析

    目录 正文 createSignal readSignal writeSignal 案例分析 总结 正文 www.solidjs.com/docs/latest… createSignal 用来创建响应式数据,它可以跟踪单个值的变化. solid.js 的响应式实现参考了 S.js,它是一个体积超小的 reactive 库,支持自动收集依赖和简单的响应式编程. createSignal createSignal 首先我们来看下 createSignal 的声明: // packages/soli

  • JS前端操作 Cookie源码示例解析

    目录 引言 源码分析 使用 源码 分析 set get remove withAttributes & withConverter 总结 引言 前端操作Cookie的场景其实并不多见,Cookie也因为各种问题被逐渐淘汰,但是我们不用Cookie也可以学习一下它的思想,或者通过这次的源码来学习其他的一些知识. 今天带来的是:js-cookie 源码分析 使用 根据README,我们可以看到js-cookie的使用方式: // 设置 Cookies.set('name', 'value'); //

  • 解析从小程序开发者工具源码看原理实现

    如何查看小程序开发者工具源码 下面我们通过微信小程序开发者工具的源码来说说小程序的底层实现原理.以开发者工具版本号State v1.02.1904090的源码来窥探小程序的实现思路.如何查看微信源码,对于mac用户而言,查看微信小程序开发者工具的包内容,然后进入Contents/Resources/app.nw/js/core/index.js,注释掉如下代码就可以查看开发者工具渲染后的代码. // 打开 inspect 窗口 if (nw.App.argv.indexOf('inspect')

随机推荐