
//多项选择结束

/*
*脚本作者:随风飘
*联系QQ:27259986
* 功能:验证所有的表单
* 使用方法:
* <form name="form1" onsubmit="return checkform(this)">
* <input type="text" name="id" check="参数1,参数2,参数3,参数4">
* <input type="submit">
* </form>
* 参数使用说明:
* 参数1:如果是必填项该值为"必",如果是可选项该值为"选"
* 参数2:目前有7个值可选
		"空":判断该处不能为空
		"帐":判断该处必须由数字`字母`下划线组成一般用于注册帐号
		"数":判断该处必须为数字
		"邮":判断该处必须为邮件
		"英":判断该处必须为字母
		"汉":判断该处必须为汉字
		"网":判断该处必须为网址
		"电":判断该处必须为电话号码
        "日":判断该处必须为日期格式
		"重":当前内容和上边内容相同(密码验证)
* 参数3:限制字符个数的下限
* 参数4:限制字符个数的上限
*例子:check="必,数,0,8" 表示为必选项并且为数字型字符不得超过8个
*例子:check="选,邮,8,8" 表示为可选项并且为邮件型字符数必须为8个
*例子:check="选,英,5,16" 表示为可选项并且为字母型字符数为5~16个之间
*/

//******主函数*****
function checkform(Formname)
{
var obj = Formname.elements;

//遍历所有表元素
for(var i=0;i<obj.length;i++)
  {
  //是验证检测类型
  if(obj[i].check)
    {
	  if(obj[i].check.split(",")[0]=="选"&&obj[i].value||obj[i].check.split(",")[0]=="必")
	  {
		//替换表单中的非法字符开始
   	    obj[i].value=(((obj[i].value.replace("'","`")).replace("delete","cleen")).replace("insert","cutin")).replace("update","modify");
	    //替换表单中的非法字符结束
		if(!obj[i].value){loseback(obj[i],"<--提醒您-->\n\n变色处为必须填写项!")}
		else
		 {
		  var switchstr=obj[i].check.split(",")[1]
	 　   switch(switchstr)
            {
             case "空" : CheckExp(obj[i],/[^ \f\n\r\t\v]/i,"<--提醒您-->\n\n让你随意输都可以出错看样我们的程序有问题谢谢您的反馈!");
			 break;
			 case "帐" : CheckExp(obj[i],/^[A-Za-z0-9._@]+$/i,"<--提醒您-->\n\n变色处必须由数字`字母`下划线组成!");
			 break;
             case "数" : CheckExp(obj[i],/^[0-9.]+$/i,"<--提醒您-->\n\n变色处必须为数字!");
			 break;
			 case "电" : CheckExp(obj[i],/^[0-9-]+$/i,"<--提醒您-->\n\n变色处必须为电话号码!");
			 break;
			 case "日" : CheckExp(obj[i],/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/i,"<--提醒您-->\n\n变色处必须为日期格式!");
			 break;
			 case "邮" : CheckExp(obj[i],/(.+)\@+([\,\w\.-]+)\.+([\,\w\.-]+)/i,"<--提醒您-->\n\n变色处必须为Email格式!");
			 break;
			 case "英" : CheckExp(obj[i],/^[a-zA-Z]+$/i,"<--提醒您-->\n\n变色处必须为字母格式!");
			 break;
			 case "汉" : CheckExp(obj[i],/^[^\x00-\xff]+$/i,"<--提醒您-->\n\n变色处必须为汉字!");
			 break;
			 case "网" : CheckExp(obj[i],/^http:[/][/]+([\,\w\.-]+)\.+([\,\w\.-]+)/i,"<--提醒您-->\n\n变色处必须为网址的标准格式!\n如：http://www.xxx.com");
			 break;
			 case "重" : if(obj[i].value!=obj[i-1].value){loseback(obj[i],"<--提醒您-->\n\n两次输入的密码不相同！")}else{sucback(obj[i])};
			 break;
			 default  : loseback(obj[i],"变色处的校验代码~"+switchstr+"~不存在,请程序员核实!");
            }
		  }
	    }
	   else{result=1}
     }
  if(result==0){return false}
  }
}


//******功能模块函数*****
//验证失败返回结果
function loseback(eimobj,notice)
{
  eimobj.style.background='#FCD9D9';
  alert(notice);
  eimobj.focus();
  result=0;
}
//验证成功并检测字符个数后返回结果
function sucback(eimobj)
{
  var strnum1=parseInt(eimobj.check.split(",")[2]);
  var strnum2=parseInt(eimobj.check.split(",")[3]);
      strlen=eimobj.value.length
  var arr=eimobj.value.match(/[^\x00-\x80]/ig)
      if(arr!=null){strlen+=arr.length}
  var strlen =parseInt(strlen);
  //alert(strlen)
  if(strlen<strnum1||strlen>strnum2)
    {
	  if(parseInt(strnum1)==parseInt(strnum2)){notice="<--提醒您-->\n\n变色处的字符数必须为"+strnum2+"个!"}
	  if(parseInt(strnum1)<parseInt(strnum2)){notice="<--提醒您-->\n\n变色处的字符数须"+strnum1+"～"+strnum2+"个!"}
	  if(parseInt(strnum1)==0){notice="<--提醒您-->\n\n变色处的字符数不得超过"+strnum2+"个!"}
      eimobj.style.background='#FCD9D9';
      alert(notice);
      eimobj.focus();
      result=0;
    }
　else
    {
      eimobj.style.background='';
      result=1;
	}
}
//判断当前元素正则表达式
function CheckExp(eimobj,str,notice)
{
 if(!eimobj.value.match(str)){loseback(eimobj,notice);}
 else{sucback(eimobj)}
}