⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check.js

📁 管理公司合同
💻 JS
📖 第 1 页 / 共 2 页
字号:
////////////////////////////////////////////////////////////////////////////////
   /*
	*--------------- 客户端表单通用验证CheckForm(oForm) -----------------
	* 功能:通过正则表达式实现通用验证所有的表单元素.
	* 使用:
	* <form name="form1" onsubmit="return CheckForm(this)">
	*  	<input type="text" name="name" check="notBlank" required="true" showName="用户姓名">
	*  	<input type="submit">
	* </form>
	* 通过对required的属性设置true或false,断定该项是否必填.
	* showName为alert时候要显示的对象.
	* check的属性设置重点说明如下:
	*		对于不带参数的规则,可直接设置规则名,如notBlank或者notBlank().
	*		对于带参数的规则,需要设置对应的规则参数,如isDate('YYYY-MM-DD').
	*		对于本JS文件未提供的正则类型判定,可自行设置正则表达式验证,如验证三到五位的字符,设置reg('^\\S{3,5}$') .
	*		可给check设置多个规则,各个规则之间使用";"隔开,如"不能含有空格,且字数不能超过10",设置"notBlank;isString('#',10)".
	* 规则函数的设定,有两种方式,说明如下:
	*		1.正则验证,返回数组rt,rt[0]为对应的正则表达式,rt[1]为对应要警告的语句.
	*		2.普通的判断function,返回false或true,函数体中通过this.value和this.showName获取页面数据,自行判定value的合法性.
	*
	* @author:wanghr100(灰豆宝宝.net)
	* @author:yehailong 2005-12-5
	*--------------- 客户端表单通用验证CheckForm(oForm) -----------------
	*/
///////////////////////////////////////////////////////////////////////////////////
	
	var value="";
	var showName="";
	var setColor = true;//错误项是否显示颜色
	var color = "#FB1E6B";
  //主函数
  function CheckForm(oForm)
  {
    var els = oForm.elements;
    //遍历所有表元素
    for(var i=0;i<els.length;i++)
    {
			if(setColor)		
				els[i].style.backgroundColor="";

			var required = els[i].required;
			var check = els[i].check;//原有值
			if(required!="undefined"&&(required==""||required=="true"||required=="yes")){
				//必填项
				els[i].check = "required";
				if(!validate(els[i])){
					els[i].check = check; 		
					return false;
				}
			}
			//如果有值,则根据正则表达式验证
			els[i].check = check; 
			if(GetValue(els[i])!=""){
				if(!validate(els[i])){
					return false;
				}
			}
    }
		
		//业务逻辑验证
		var logic = logicCheck();
		if(logic!=null&&!logic){
			return false;
		}
		
		if(event.srcElement.tagName=="INPUT"){
			event.srcElement.disabled = true;
			event.srcElement.value = '正在提交,请稍侯';
			oForm.submit();
		}
		return true;
  }
	function logicCheck(){
		return true;
	}
	function validate(ele){
		if(!ele.check){
			return true;
		}
		//取得表单的值,用通用取值函数			
		var sVal = GetValue(ele);
		this.value = sVal;
		
		this.showName="";
		if(ele.showName!=null&&ele.showName!="undefined"){
			this.showName = "“"+ele.showName+"”";
		}else{
			var parentEle = ele.parentElement;
			if(parentEle.tagName=="TD"){
				temp = parentEle.previousSibling.innerText;
				this.showName = "“"+temp+"”";
			}
		}

		var checkArr = ele.check.split(";");
		for (var i=0;i<checkArr.length ;i++ )
		{	
			if(checkArr[i]=="")
				continue;

			//取得验证的规则函数
			var sReg = "";
			if(ele.check){
				try{
	        sReg = executeFunc(checkArr[i]);
				}catch(e){
					alert(e+"使用错误:类型'"+checkArr[i]+"'对应的验证规则函数未定义!");
					return false;
					//sReg = ele.check;
				}
			}
			if(sReg==null||sReg=="undefined"){
				continue;
			}
			if(sReg==false||sReg=="false"){
				GoBack(ele) 
		    return false;	
			}
			if(sReg[0]==""){
				continue;
			}

			//判定是否符合正则表达式
			if(!regValidate(this.value,sReg[0])){
		    //验证不通过,弹出提示warning
				var msg = this.showName;
				if(ele.check){
					try{
						msg += sReg[1];
					}catch(e){
						msg += "格式不正确!";
					}
				}
				alert(msg);
				//该表单元素取得焦点,用通用返回函数
				GoBack(ele) 
		   	 	return false;
			}
		}
		return true;
	}

  //通用取值函数分三类进行取值
  //文本输入框,直接取值el.value
  //单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个
  //单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个
  function GetValue(el)
  {
    //取得表单元素的类型
    var sType = el.type;
    switch(sType)
    {
      case "text":
      case "hidden":
      case "password":
      case "file":
      case "textarea": return el.value;
      case "checkbox":
      case "radio": return GetValueChoose(el);
      case "select-one":
      case "select-multiple": return GetValueSel(el);
    }
    //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
    function GetValueChoose(el)
    {
      var sValue = "";
      //取得第一个元素的name,搜索这个元素组
      var tmpels = document.getElementsByName(el.name);
      for(var i=0;i<tmpels.length;i++)
      {
        if(tmpels[i].checked)
        {
          sValue += "0";
        }
      }
      return sValue;
    }
    //取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
    function GetValueSel(el)
    {
      var sValue = "";
      for(var i=0;i<el.options.length;i++)
      {
        //单选下拉框提示选项设置为value=""
        if(el.options[i].selected && el.options[i].value!="")
        {
          sValue += "0";
        }
      }
      return sValue;
    }
  }

  //通用返回函数,验证没通过返回的效果.分三类进行取值
  //文本输入框,光标定位在文本输入框的末尾
  //单多选,第一选项取得焦点
  //单多下拉菜单,取得焦点
  function GoBack(el)
  {
    //取得表单元素的类型
    var sType = el.type;
    switch(sType)
    {
      case "text":
      case "hidden":
      case "password":
      case "file":
      case "textarea":
				try{
					el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
					if(setColor&&sType!="textarea"){
						el.style.backgroundColor=color;
					}
				}catch(e){}
				break;
      case "checkbox":
      case "radio": 
				try{
					var els = document.getElementsByName(el.name);els[0].focus();	
				}catch(e){}
				break;
      case "select-one":
      case "select-multiple":
				try{
					el.focus();	
				}catch(e){}					
    }
  }

	function executeFunc(name){
		if(name.indexOf("(")==-1){
			return eval(name+"()");
		}else{
			return eval(name);
		}
	}
	
	//去除空格
	function trim(value){
		if(value == null||value == "undefined") return "";
		return value.replace(/(^\s*)|(\s*$)/g, "");
	}

	//判定某个值与表达式是否相符
	function regValidate(value,sReg){
		//字符串->正则表达式,不区分大小写
		var reg = new RegExp(sReg ,"i");
		if(reg.test(value)){
			return true;
		}else{
			return false;
		}
	}
	
	//判定某个数值与某个验证函数是否相符
	function checkValue(value,func){
		this.value = value;
		var rt = "";
		try{
			rt = executeFunc(func);
		}catch(e){
			alert(e+"使用错误:函数"+func+"未定义!");
			return false;
			//sReg = ele.check;
		}
		
		if(rt==null||rt=="undefined"){
				return true;
		}
		if(rt==false||rt=="false"){
	    return false;	
		}
		//验证表达式
		var check = regValidate(value,rt[0]);
		if(!check&&this.showName!=""){
			alert(this.showName+rt[1]);
		}
		return check;
	}

	//检查某个元素与某个验证函数是否相符,需要传入元素的ID
	function checkElement(id,func,showName){
		var obj = document.getElementById(id);
		if(obj==null||obj=="undefined"){
			//alert("对应id:"+id+"的元素不存在!");
			return false;
		}
		return checkEle(obj,func,showName);
	}
	//检查某个元素对象的合法性
	function checkEle(obj,func,showName){
		if(setColor){
			obj.style.borderColor="";
		}
		if(showName!=null){
			this.showName = "“"+showName+"”";
		}else{
			this.showName = "";
		}

		var value = obj.value;
		var check = checkValue(value,func);
		if(!check){
			GoBack(obj);
		}
		return check;
	}

	//检查某个对象(checkbox/select-multiple)至少选择个数,需要传入元素的NAME
	function checkSelectByName(name,num,showName){
		var obj = document.getElementsByName(name);
		if(obj.length==0){
			//alert("对应name:"+name+"的元素不存在!");
			return false;
		}
		if(showName!=null){
			this.showName = "“"+showName+"”";
		}else{
			this.showName = "";
		}

		var check = checkValue(GetValue(obj[0]),"select("+num+")");
		if(!check){
			GoBack(obj[0]);
		}
		
		return check;
	}
	
	//获取某个元素的值
	function elementValue(id){
		var obj = document.getElementById(id);
		if(obj==null||obj=="undefined"){
			return "";
		}
		return obj.value;
	}
	
	function setCheck(){
		var readonly = getFieldValue("readonly");
		var allInput = document.all.tags("INPUT");
		for(var i=0;i<allInput.length;i++){
			if((allInput[i].type!="text"&&allInput[i].type!="password"&&allInput[i].type!="radio")
				||allInput[i].disabled)
				continue;
			if("true"==readonly&&allInput[i].format!="false"){
				//alert();
				setReadonly(allInput[i],readonly);
			}
			setRequired(allInput[i]);
		}
		allInput = document.all.tags("TEXTAREA");
		for(var i=0;i<allInput.length;i++){
			if(allInput[i].disabled)
				continue;
			if("true"==readonly&&allInput[i].format!="false"){
				setReadonly(allInput[i],readonly);
			}
			setRequired(allInput[i]);
		}
		allInput = document.all.tags("SELECT");
		for(var i=0;i<allInput.length;i++){
			if(allInput[i].disabled)
				continue;
			/*
			if("true"==readonly&&allInput[i].format!="false"){
				setReadonly(allInput[i],readonly);
			}
			*/
			setRequired(allInput[i]);
		}
		
		function setRequired(obj){
			if(isDefined(obj.required)&&obj.required!="false"){
				obj.title = "该项目必填";
				var parentEle = obj.parentElement;
				if(parentEle.tagName=="TD"){
					parentEle.previousSibling.innerHTML = "<font color='red' title='该项目必填'>"+parentEle.previousSibling.innerHTML+"</font>"
					//var preEle = parentEle.
				}
			}
		}
		function setReadonly(obj,readonly){
			obj.className = "readonlyTextInput";
			obj.readOnly = true;
			obj.onfocus = function bb(){window.event.returnValue = false;};
			obj.onclick = function bb(){window.event.returnValue = false;};
		}
	}
	
	//属性是否定义
	function isDefined(prop){
	  	if(prop==null||prop=="undefined"){
	 		return false;
	  	}
	  	return true;
	}
      
	function showMsg(msg){
		if(this.showName!=null&&this.showName!=""){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -