/*
魏言专用js表单验证库使用说明:
更新日期:2009-12-05
不合法返回true 合法返回false
id 为 验证的元素id名称 字符串 na 字符串 元素功能名 如: 用户名 size 长度数字型
*/
//验证不允许指定值 如不允许空
function isnull(id,na,value)
{
var el=document.getElementById(id);//获得元素
if(el.value==value)
{
if(value=="")
{
alert(na+"不允许为空!");
}else{
alert("请选择"+na+"!");
}
el.focus();
return true;
}else{
return false;
}
}
//验证只能包含纯正整数 不包含小数
function isInteger(id,na)
{
var el=document.getElementById(id);//获得元素
var regx=/^[0-9]+$/;
if(isnull(id,na,""))
{
return true;
}else if(!regx.test(el.value))
{
el.focus();
alert(na+"只能为数字!");
return true;
}else{
return false;
}
}
//验证只能为数字,包含小数
function isDigital(id,na)
{
var el=document.getElementById(id);//获得元素
if(isNaN(el.value) || el.value=="")
{
//不合法
el.focus();
alert(na+"只能填写数字类型!");
return true;
}else{
return false;
}
}
//验证日期格式
function isDate(id,na)
{
var el=document.getElementById(id);//获得元素
if(CheckDate(el.value))//判断如果不是日期格式
{
el.focus();
alert(na+"必须为日期格式!");
return true;
}else{
return false;
}
}
//验证Email
function isEmail(id,na)
{
var el=document.getElementById(id);//获得元素
var regx=/^([a-zA-Z0-9_-])+@((/w[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/i;
if(!regx.test(el.value))
{
el.focus();
alert(na+"格式不合法!");
return true;
}else{
return false;
}
}
//验证只能输入中文
function isChinese(id,na)
{
var el=document.getElementById(id);//获得元素
var regx=/[^/u4E00-/u9FA5]/g;
if(isnull(id,na,""))
{
return true;
}else if(regx.test(el.value))
{
el.focus();
alert(na+"只能输入中文汉字!");
return true;
}else{
return false;
}
}
//验证不允许输入汉字只能包含字母、数字、下划线
function isEnglish(id,na)
{
var el=document.getElementById(id);//获得元素
var regx=/^[A-Za-z0-9_]+$/;
if(isnull(id,na,""))
{
return true;
}else if(!regx.test(el.value))
{
el.focus();
alert(na+"只能包含字母、数字、下划线!");
return true;
}else{
return false;
}
}
//不允许超过(大于)指定长度:id 验证的id ,size 限制的长度 ,验证控件名 如名称 提示名称只允许输入多少个字符
function Thanlength(id,size,na)
{
var el=document.getElementById(id);//获得元素
if(isnull(id,na,""))
{
return true;
}else if(el.value.length>size)
{
alert(na+"至多输入"+size+"个字符!");
el.focus();
return true;
}else{
return false;
}
}
//不允许少于(小于)指定长度:id 验证的id ,size 限制的长度 ,验证控件名 如名称 提示名称只允许输入多少个字符
function Lesslength(id,size,na)
{
var el=document.getElementById(id);//获得元素
if(isnull(id,na,""))
{
return true;
}else if(el.value.length<size)
{
alert(na+"至少输入"+size+"个字符!");
el.focus();
return true;
}else{
return false;
}
}
//验证两次输入是否一样 不合法返回true
function issame(id,id2,na)
{
var el1=document.getElementById(id).value;
var el2=document.getElementById(id2).value;
if(isnull(id,na,""))
{
return true;
}else if(el1==el2)
{
//合法
return false;
}else{
//非法
alert("两次输入"+na+"不一致,请重新输入!");
return true;
}
}
//验证URL格式
function IsURL(id,na){
var el=document.getElementById(id);//获得元素
var regx=/[a-zA-z]+:[^s]*/;
if(!regx.test(el.value))
{
el.focus();
alert(na+"格式不合法!");
return true;
}else{
return false;
}
}
//验证邮政编码
function isPostcode(id,na){
var el=document.getElementById(id);//获得元素
var regx=//d{6}/;
if(!regx.test(el.value))
{
el.focus();
alert(na+"格式不合法!");
return true;
}else{
return false;
}
}
//验证手机号
function isPhone(id,na){
var el=document.getElementById(id);//获得元素
var regx=/^[1]([3][0-9]{1}|59|58)[0-9]{8}$/;
if(!regx.test(el.value))
{
el.focus();
alert(na+"格式不合法!");
return true;
}else{
return false;
}
}
//验证座机电话 0470-8255311 010-8255311 格式
function isTel(id,na){
var el=document.getElementById(id);//获得元素
var regx=/^(([0/+]/d{2,3}-)?(0/d{2,3})-)(/d{7,8})(-(/d{3,}))?$/;
if(!regx.test(el.value))
{
el.focus();
alert(na+"格式不合法!");
return true;
}else{
return false;
}
}
//验证身份证合法性
function IscidInfo(id){
var el=document.getElementById(id);//获得元素
var sId=el.value;
var aCity={
11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",
41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",
46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",
54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",
65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
}
var iSum=0
var info=""
if(!/^/d{17}(/d|x)$/i.test(sId))
{
el.focus();
alert("身份证长度不合法!");
return true;
}
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)
{
el.focus();
alert("身份证地区不合法!");
return true;
}
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"));
var age=new Date().getFullYear()-d.getFullYear();
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
el.focus();
alert("身份证生日不合法!");
return true;
}
for(var i = 17;i>=0;i --)
iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)
{
el.focus();
alert("身份证编号不合法!");
return true;
}
//alert(aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")+","+age);
return false;
}
//提取身份证地区,生日,性别,年龄
function GetIdInfo(id){
var el=document.getElementById(id);//获得元素
var sId=el.value;
var aCity={
11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",
33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",
41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",
46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",
54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",
65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"
}
var iSum=0
var info=""
if(!/^/d{17}(/d|x)$/i.test(sId))
{
el.focus();
alert("身份证长度不合法!");
return "";
}
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)
{
el.focus();
alert("身份证地区不合法!");
return "";
}
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"));
var age=new Date().getFullYear()-d.getFullYear();
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
el.focus();
alert("身份证生日不合法!");
return "";
}
for(var i = 17;i>=0;i --)
iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)
{
el.focus();
alert("身份证编号不合法!");
return "";
}
return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")+","+age;
}
//判断输入的日期是否正确 内部 private
function CheckDate(INDate)
{
if(INDate==""){return true;}
subYY=INDate.substr(0,4)
if(isNaN(subYY) || subYY<=0){
return true;
}
//转换月份
if(INDate.indexOf('-',0)!=-1){ separate="-"}
else{
if(INDate.indexOf('/',0)!=-1){separate="/"}
else {return true;}
}
area=INDate.indexOf(separate,0)
subMM=INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1))
if(isNaN(subMM) || subMM<=0){return true;}
if(subMM.length<2){subMM="0"+subMM}
//转换日
area=INDate.lastIndexOf(separate)
subDD=INDate.substr(area+1,INDate.length-area-1)
if(isNaN(subDD) || subDD<=0){
return true;
}
if(eval(subDD)<10){subDD="0"+eval(subDD)}
NewDate=subYY+"-"+subMM+"-"+subDD
if(NewDate.length!=10){return true;}
if(NewDate.substr(4,1)!="-"){return true;}
if(NewDate.substr(7,1)!="-"){return true;}
var MM=NewDate.substr(5,2);
var DD=NewDate.substr(8,2);
if((subYY%4==0 && subYY%100!=0)||subYY%400==0){ //判断是否为闰年
if(parseInt(MM)==2){
if(DD>29){return true;}
}
}else{
if(parseInt(MM)==2){
if(DD>28){return true;}
}
}
var mm=new Array(1,3,5,7,8,10,12); //判断每月中的最大天数
var flag = false;
for(i=0;i<mm.length;i++){
if(parseInt(MM,10) == mm[i]){flag = true;}
}
if (flag == true){
if(parseInt(DD)>31){return true;}
}else{
if(parseInt(DD)>30){return true;}
}
if(parseInt(MM)>12){return true;}
return false;
}