您的位置:首页 > Web前端 > JavaScript

一个通用的javascript验证的函数类

2009-12-04 23:47 281 查看
/**

* <p>Title: </p>

* <p>Description:Javascript公用函数库</p>

* <p>Copyright: Copyright (c) 2003</p>

* <p>Company: szkingdom </p>

* @author 陈剑英

* @version 1.0

*/

/**

*@一个通用的javascript验证的函数类

*@同过它的一个对象可以访问该类定义的所有方法

*/

function valid(thisform)

{

this.form = thisform;

this.isnull = isnull;

this.chkemail = chkemail;

this.length_less = length_less;

this.length_more=length_more;

this.isnumber = isnumber;

this.checkselect = checkselect;

this.del = del;

this.disObj = disObj;

this.waitObj = waitObj;

this.isPhone = isPhone;

this.isMobile = isMobile;

this.isAddress = isAddress;

this.CheckMonth = CheckMonth;

this.onlyCN = onlyCN;

this.onlyNum = onlyNum;

this.compare = compare;

this.CheckDate = CheckDate;

this.currencyFormat = currencyFormat;

this.isIP = isIP;

this.compareIP = compareIP;

}

/**

*@验证一个指定的元素不能为空

*@obj 组件对象名

*@lable 组件中文标示

*@disFocus 是否禁用焦点(该参数可以不提供) 为true则不应用焦点

*/

function isnull(obj,lable,disFocus)

{

if (trim(this.form[obj].value)== "")

{

alert(lable+"不能为空!");

if(disFocus != true)

this.form[obj].focus();

return true

}

else

return false

}

/**

*@验证一个指定的元素的长度不能小于指定的一个长度len

*@

*/

function length_less(obj,lable,len)

{

if(this.form[obj].value == "")

return false;

else if(this.form[obj].value.length < len)

{

alert(lable+"的长度不能小于"+len);

this.form[obj].focus();

return true

}

else

return false

}

/**

*@验证一个指定的元素的长度不能大于指定的一个长度len

*@

*/

function length_more(obj,lable,len)

{

if(this.form[obj].value == "")

return false;

else if(this.form[obj].value.length > len)

{

alert(lable+"的长度不能大于"+len);

this.form[obj].focus();

return true

}

else

return false

}

/**

*@ 验证一个指定的元素必须是数字

*@

*/

function isnumber(obj,lable)

{

if(isNaN(this.form[obj].value))

{

alert(lable+"的值必须为数字! ");

this.form[obj].focus();

return true

}

else

return false

}

/**

*@ 验证一个电子邮件的合法性

*@

*/

function chkemail(obj)

{

var checkStr = this.form[obj].value;

var allValid1 = false;

var allValid2 = false;

if (this.form[obj].value.length > 0)

{

if (this.form[obj].value.length > 50)

{

alert("请输入正确的电子信箱,如www@kingdon.com.cn!");

this.form[obj].focus();

return (true);

}

for (i = 0; i < checkStr.length; i++)

{

ch = checkStr.charAt(i);

if (ch == '@')

{

allValid1 = true;

break;

}

}

for (i = 0; i < checkStr.length; i++)

{

ch = checkStr.charAt(i);

if (ch == '.')

{

allValid2 = true;

break;

}

}

if (!allValid1)

{

alert("请输入正确的电子信箱,如www@kingdon.com.cn!");

this.form[obj].focus();

return (true);

}

if (!allValid2)

{

alert("请输入正确的电子信箱,如www@kingdon.com.cn!");

this.form[obj].focus();

return (true);

}

}

return false

}

/**

*@ 验证一个下拉表是否选择

*@

*/

function checkselect(obj,lable)//验证

{

if(this.form[obj].selectedIndex == 0)

{

alert("请选择"+lable);

this.form[obj].focus();

return true

}

}

/**

*@ 确认删除

*@

*/

function del()

{

if (confirm("您真的要删除吗?"))

{

return(true);

}

else

{

return(false);

}

}

/**

*@ 确认取消

*@

*/

function cancel()

{

if (confirm("您真的要取消吗?"))

{

return(true);

}

else

{

return(false);

}

}

/**

*@ 设置list值-- 通用

*@ 根据list的value值设置对应的选项

*/

function set_list(thisform,listname,lx)

{

for(var i=0; i < thisform[listname].options.length; i++)

{

if (lx == thisform[listname].options[i].value)

{

thisform[listname].options[i].selected = true

}

}

}

//以下为重构时扩充的函数

/**

* 使用disable禁止组件

* @param n

* @return

*/

function disObj(obj)

{

this.form[obj].disabled = true;

}

/**

* 设置鼠标等待

* @param n

* @return

*/

function waitObj(obj)

{

this.form[obj].style.cursor = "wait";

}

/**

* 验证小灵通、座机电话和传真

* @param n

* @return

*/

function isPhone(obj,lable)

{

if(this.form[obj].value == "")

return false;

var v=this.form[obj].value;

if(v.search(/^(0[0-9]{2,3}-)?[0-9]{7,10}$/) == -1)

{

alert("不是有效的"+lable+"! 输入格式为:028-85210088");

this.form[obj].focus();

return true;

}else

{

return false;

}

}

/**

* 验证手机(不分联通和移动)

* @param n

* @return

*/

function isMobile(obj,lable)

{

if(this.form[obj].value == "")

return false;

var v=this.form[obj].value;

if(v.search(/^13[0-9]{7,10}$/) == -1)

{

alert("不是有效的"+lable);

this.form[obj].focus();

return true;

}else

{

return false;

}

}

/**

* 验证网址格式

* @param n

* @return

*/

function isAddress(obj,lable)

{

if(this.form[obj].value == "")

return false;

var v=this.form[obj].value;

if(v.search(/^(http:////)?({2,3}$/]www.)?(/w+(-/w+)*/.){1,2}[A-Za-z]{2,3}$/) == -1)

{

alert("不是有效的"+lable+" 输入格式为:www.sina.com.cn");

this.form[obj].focus();

return true;

}else

{

return false;

}

}

/**

* 只能输入汉字,用在onkeyup事件中

* @param n

*/

function onlyCN(obj)

{

var v = this.form[obj].value;

this.form[obj].value = v.replace(/[^/u4E00-/u9FA5]/g,'');

}

/**

* 只能输入数字(包括大键盘,小键盘,Tab键,回退键,左右键,回车键)用在onkeydown事件中

* @param

* @return

*/

function onlyNum(){

if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)

||event.keyCode==9||event.keyCode==8||event.keyCode==37||event.keyCode==39||event.keyCode==13)){

alert("只能输入数字!");

event.returnValue=false;

}

}

/**

* 只能输入数字(包括大键盘,小键盘,Tab键,回退键,左右键,回车键,逗号)用在onkeydown事件中

* @param

* @return

*/

function onlyKey(){

if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)

||event.keyCode==9||event.keyCode==8||event.keyCode==37||event.keyCode==39||event.keyCode==13)){

alert("只能输入数字!");

event.returnValue=false;

}

}

/**

* 用于年月的验证

* @param n

*/

function CheckMonth(obj)

{

if(this.form[obj].value == "")

return false;

var strDate=this.form[obj].value;

var intYear;

var intMonth;

var intDay;

if(strDate.length!=6)

{

alert("输入长度不正确,应是六位!");

this.form[obj].focus();

return true;

}

intYear = parseInt(strDate.substring(0,4),10);

intMonth = parseInt(strDate.substring(4,6),10);

if(isNaN(intYear)||isNaN(intMonth))

{

alert("输入的不是数字格式!");

this.form[obj].focus();

return true;

}

if(intMonth>12||intMonth<1)

{

alert("月份输入错误!");

this.form[obj].focus();

return true;

}

return false;

}

/**

* 去除字符串的前后空格

* @param str

* @return

*/

function trim(str)

{

var pos = str.length,arrays,result;

//str=new String();

/******去除字符串的前空格******/

arrays = str.split("");

for (var i = 0; i <= str.length-1; i++)

{

if(arrays[i] != " ")

{

pos = i;

break;

}

}

result=str.substring(pos,str.length);

/******去除字符串的后空格******/

arrays=result.split("");

for(var j = result.length-1; j >= 0; j--)

{

if(arrays[j] != " ")

{

pos = j;

break;

}

}

result = result.substring(0,pos+1);

return result;

}

/**

* 比较起始日期和终止日期的大小

* @param begin,end

* @return

*/

function compare(begin,end)

{

if((this.form[begin].value == "")||(this.form[end].value == ""))

return false;

var s1=this.form[begin].value;

var s2=this.form[end].value;

var intS1 = parseInt(s1);

var intS2 = parseInt(s2);

if(intS1>intS2)

{

alert("日期选择的起始不符!");

this.form[end].focus();

return true;

}

else

{

return false;

}

}

/**

* 比较起始IP和终止IP的大小

* @param begin,end

* @return

*/

function compareIP(begin,end)

{

if((this.form[begin].value == "")||(this.form[end].value == ""))

return false;

var IP1=this.form[begin].value;

var IPArr1=IP1.split(".");

for(var i=0;i<IPArr1.length;i++)

{

if(IPArr1[i]<10)

IPArr1[i]="00"+IPArr1[i]

if(IPArr1[i]>9&&IPArr1[i]<100)

IPArr1[i]="0"+IPArr1[i]

}

var s1="";

for(var i=0;i<IPArr1.length;i++)

{

s1+=IPArr1[i]

}

var IP2=this.form[end].value;

var IPArr2=IP2.split(".");

for(var i=0;i<IPArr2.length;i++)

{

if(IPArr2[i]<10)

IPArr2[i]="00"+IPArr2[i]

if(IPArr2[i]>9&&IPArr2[i]<100)

IPArr2[i]="0"+IPArr2[i]

}

var s2="";

for(var i=0;i<IPArr2.length;i++)

{

s2+=IPArr2[i]

}

var intS1 = parseInt(s1);

var intS2 = parseInt(s2);

if(intS1>intS2)

{

alert("起始IP不能大于终止IP!");

this.form[end].focus();

return true;

}

else

{

return false;

}

}

/**

* 验证年月

* @param obj

* @return

*/

function checkdate(obj)

{

if(isNaN(obj.value))

{

alert("日期必须位数字!")

obj.select()

}

}

/** 检查日期格式 **/

function CheckDate(obj){

if(this.form[obj].value == "")

return true;

var intYear;

var intMonth;

var intDay;

var boolLeapYear;

var strDate=this.form[obj].value;

if(strDate.length>8){

//alert("时间格式不对!")

return false;

}

intYear = parseInt(strDate.substring(0,4),10);

intMonth = parseInt(strDate.substring(4,6),10);

intDay = parseInt(strDate.substring(6),10);

if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)){

//alert("时间格式不对!")
this.form[obj].focus();

return false;

}

if(intMonth>12||intMonth<1){

//alert("时间格式不对!")
this.form[obj].focus();

return false;

}

if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)){

//alert("时间格式不对!")

return false;

}

if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)){

// alert("时间格式不对!")
this.form[obj].focus();

return false;

}

if(intMonth==2){

if(intDay<1){

//alert("时间格式不对!")

return false;

}

boolLeapYear = false;

if((intYear%100)==0){

if((intYear%400)==0) boolLeapYear = true;

}

else{

if((intYear%4)==0) boolLeapYear = true;

}

if(boolLeapYear){

if(intDay>29){

//alert("时间格式不对!")
this.form[obj].focus();

return false;

}

}

else{

if(intDay>28){

//alert("时间格式不对!")
this.form[obj].focus();

return false;

}

}

}

return true;

}

/*

调试 from元素的值

*/

function debug_form(thisform)

{

var str="";

for(i=0 ; i< thisform.elements.length; i++)

{

if(thisform.elements[i].value == "")

tmpp = "****"

else

tmpp = thisform.elements[i].value

str += thisform.elements[i].name +"-- " + tmpp +"/n";

}

alert(str)

}

/**

*@验证是否是IP地址

*@是正确的IP返回true,不符合IP格式返回false

*author:muyl

*/

function isIP(obj,lable)

{

if(this.form[obj].value == "")

return false;

var IP=this.form[obj].value;

var IPArr=IP.split(".");

if(IPArr.length<4)

{

alert(lable+"不是正确的IP地址,正确的格式为:192.168.0.10");

this.form[obj].focus();

return false;

}

else

{

for(i=0;i<4;i++)

{

if(isNaN(IPArr[i]))

{

alert(lable+"不是正确的IP地址,正确的格式为:192.168.0.10");

this.form[obj].focus();

return false;

}

else if(IPArr[i]>255)

{

alert(lable+"不是正确的IP地址,正确的格式为:192.168.0.10");

this.form[obj].focus();

return false;

}

}

}

return true;

}

/**

*分隔输入框中货币值

*参数表:input,输入框(this);milSep,千位分隔符;decSep,小数点;event,事件(event)

*example: <input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',','.',event))">

*author:muyl

*/

function currencyFormat(input,milSep,decSep,event)

{

var sep = 0;

var key = '';

var i = j = 0;

var len = len2 = 0;

var strCheck = '0123456789';

var aux = aux2 = '';

var whichCode = (window.Event) ? event.which : event.keyCode;

if (whichCode == 13) return false; // Enter

key = String.fromCharCode(whichCode); // Get key value from key code

if (strCheck.indexOf(key) == -1) return false; // Not a valid key

len = input.value.length;

for(i = 0; i < len; i++)

if ((input.value.charAt(i) != '0') && (input.value.charAt(i) != decSep)) break;

aux = '';

for(; i < len; i++)

if (strCheck.indexOf(input.value.charAt(i))!=-1) aux += input.value.charAt(i);

aux += key;

len = aux.length;

if (len == 0) input.value = '';

if (len == 1) input.value = '0'+ decSep + '0' + aux;

if (len == 2) input.value = '0'+ decSep + aux;

if (len > 2)

{

aux2 = '';

for (j = 0, i = len - 3; i >= 0; i--)

{

if (j == 3)

{

aux2 += milSep;

j = 0;

}

aux2 += aux.charAt(i);

j++;

}

input.value = '';

len2 = aux2.length;

for (i = len2 - 1; i >= 0; i--)

input.value += aux2.charAt(i);

input.value += decSep + aux.substr(len - 2, len);

}

return false;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: