js常用的一些自定义涵数

 

function

// 简要目录:

// 1.是否为空或全是空字符

// 2.字符串是否只包含0到9的数字

// 3.是否整数(允许带正负号)

// 4.是否数字

// 5.小数(m,n),忽略小数首尾的0,不允许正负号

// 6.字符串是否全是字母

// 7.字符串是否全是字母和数字

// 8.日期

// 9.居民身份证号码

// 10.电话号码

// 11.邮政编码

// 12.是否合法的email

// 13.一列checkbox中是否至少有一个checked 14.一列checkbox中是否只有一个checked

// 15.一列checkbox中是否全部checked 16.多个下拉框不能一样

// 其它未编号的function为辅助,也可以单独使用

 

// 注意:除固定格式的输入项如日期,邮政编码和居民身份证号码外,其余均未判断长度和是否为空。

 

var digits = "0123456789";

var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"

var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

var whitespace = " "t"n"r";

var defaultEmptyOK = true

 

 

//是否 null 或者 空

function isEmpty(s)

{

return ((s == null) || (s.length == 0) )

}

 

//1.是否为空或全是空字符

function isWhitespace (s)

 

{ var i;

 

if (isEmpty(s)) return true;

 

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

{

var c = s.charAt(i);

 

if (whitespace.indexOf(c) == -1) return false;

}

 

return true;

}

 

//从s里去掉包含在bag中的字符,s="abcd" bag="ace" return "bd"

function stripCharsInBag (s, bag)

 

{ var i;

var returnString = "";

 

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

{

var c = s.charAt(i);

if (bag.indexOf(c) == -1) returnString += c;

}

 

return returnString;

}

//从s里去掉不包含在bag中的字符 s="abcd" bag="ace" return "ac"

function stripCharsNotInBag (s, bag)

 

{ var i;

var returnString = "";

 

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

{

var c = s.charAt(i);

if (bag.indexOf(c) != -1) returnString += c;

}

 

return returnString;

}

//从s里去掉空字符,s="ab c d " return "abcd"

function stripWhitespace (s)

 

{ return stripCharsInBag (s, whitespace)

}

 

//字符c是否在字符串s中

function charInString (c, s)

{ for (i = 0; i < s.length; i++)

{ if (s.charAt(i) == c) return true;

}

return false

}

 

//去掉字符串前面的空字符

function stripInitialWhitespace (s)

 

{ var i = 0;

 

while ((i < s.length) && charInString (s.charAt(i), whitespace))

i++;

 

return s.substring (i, s.length);

}

//字符是否为字母

function isLetter (c)

{ return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )

}

 

//字符是否为0-9

function isDigit (c)

{ return ((c >= "0") && (c <= "9"))

}

 

//字符是否为字母或数字

function isLetterOrDigit (c)

{ return (isLetter(c) || isDigit(c))

}

//字符是否为数字或"-"

function isTel(c)

{ return (((c >= "0") && (c <= "9"))|| (c=="-"))

}

 

//2.字符串是否只包含0到9的数字

function isInteger (s)

 

{ var i;

 

if (isEmpty(s))

if (isInteger.arguments.length == 1) return defaultEmptyOK;

else return (isInteger.arguments[1] == true);

 

 

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

{

var c = s.charAt(i);

 

if (!isDigit(c)) return false;

}

 

return true;

}

 

//3.是否整数(允许带正负号)

function isSignedInteger (s)

 

{ if (isEmpty(s))

if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;

else return (isSignedInteger.arguments[1] == true);

 

else {

var startPos = 0;

var secondArg = defaultEmptyOK;

 

if (isSignedInteger.arguments.length > 1)

secondArg = isSignedInteger.arguments[1];

 

if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )

startPos = 1;

return (isInteger(s.substring(startPos, s.length), secondArg))

}

}

 

//是否为大于零的整数(允许正负号)

function isPositiveInteger (s)

{ var secondArg = defaultEmptyOK;

 

if (isPositiveInteger.arguments.length > 1)

secondArg = isPositiveInteger.arguments[1];

 

return (isSignedInteger(s, secondArg)&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) > 0) ) );

}

 

//是否为大于等于零的整数(允许正负号)

function isNonnegativeInteger (s)

{ var secondArg = defaultEmptyOK;

 

if (isNonnegativeInteger.arguments.length > 1)

secondArg = isNonnegativeInteger.arguments[1];

 

return (isSignedInteger(s, secondArg)

&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) >= 0) ) );

}

 

//是否为小于零的整数(允许正负号)

function isNegativeInteger (s)

{ var secondArg = defaultEmptyOK;

 

if (isNegativeInteger.arguments.length > 1)

secondArg = isNegativeInteger.arguments[1];

 

return (isSignedInteger(s, secondArg)

&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) < 0) ) );

}

 

//是否为小于等于零的整数(允许正负号)

function isNonpositiveInteger (s)

{ var secondArg = defaultEmptyOK;

 

if (isNonpositiveInteger.arguments.length > 1)

secondArg = isNonpositiveInteger.arguments[1];

 

return (isSignedInteger(s, secondArg)

&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) <= 0) ) );

}

 

 

//4.是否数字

function isFloat (s)

{

var i;

var seenDecimalPoint = false;

if (isEmpty(s))

if (isFloat.arguments.length == 1) return defaultEmptyOK;

else return (isFloat.arguments[1] == true);

if (s == ".") return false;

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

{

// Check that current character is number.

var c = s.charAt(i);

if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;

else if (!isDigit(c)) return false;

}

return true;

}

 

//是否数字(允许正负号)

function isSignedFloat (s)

 

{ if (isEmpty(s))

if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;

else return (isSignedFloat.arguments[1] == true);

 

else {

var startPos = 0;

var secondArg = defaultEmptyOK;

 

if (isSignedFloat.arguments.length > 1)

secondArg = isSignedFloat.arguments[1];

 

// skip leading + or -

if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )

startPos = 1;

return (isFloat(s.substring(startPos, s.length), secondArg))

}

}

 

//5.小数(m,n),忽略小数首尾的0,不允许正负号

function isDecimal(s,m,n){

if(!isFloat(s)) return false;

if(String(parseInt(s,10)).length > m-n) return false;

var ss = String(parseFloat(s));

if(ss.indexOf(".")>=0 && ss.substring( ss.indexOf(".") + 1, ss.length).length > n ) return false;

return true;

}

 

 

//6.字符串是否全是字母

function isAlphabetic (s)

{ var i;

 

if (isEmpty(s))

if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;

else return (isAlphabetic.arguments[1] == true);

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

{

// Check that current character is letter.

var c = s.charAt(i);

if (!isLetter(c))

return false;

}

// All characters are letters.

return true;

}

//7.字符串是否全是字母和数字

function isAlphanumeric (s)

 

{ var i;

 

if (isEmpty(s))

if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;

else return (isAlphanumeric.arguments[1] == true);

 

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

{

var c = s.charAt(i);

 

if (! (isLetter(c) || isDigit(c) ) )

return false;

}

 

return true;

}

 

 

//8.日期,format 可设定为 "yyyy-MM-dd"(注意大小写),分隔符可变

function toValidateDate(str,format) {

if(str.length != format.length) return false;

 

var year = 2000;

var month = 1;

var day = 1;

var hour = 0;

var minute = 0;

var second = 0;

 

if(format.indexOf("yyyy") != -1) {

if(isNaNEx(year = SearchEx(str,format,"yyyy"))) return false;

format = format.replace(/yyyy/,year);

}

 

if(format.indexOf("MM") != -1) {

if(isNaNEx(month = SearchEx(str,format,"MM"))) return false;

format = format.replace(/MM/,month);

}

 

if(format.indexOf("dd") != -1) {

if(isNaNEx(day = SearchEx(str,format,"dd"))) return false;

format = format.replace(/dd/,day);

}

 

if(format.indexOf("HH") != -1) {

if(isNaNEx(hour = SearchEx(str,format,"HH"))) return false;

if(parseInt(hour,10) < 0 || parseInt(hour,10) > 23) return false;

format = format.replace(/HH/,hour);

}

 

if(format.indexOf("mm") != -1) {

if(isNaNEx(minute = SearchEx(str,format,"mm"))) return false;

if(parseInt(minute,10) < 0 || parseInt(minute,10) > 59) return false;

format = format.replace(/mm/,minute);

}

 

if(format.indexOf("ss") != -1) {

if(isNaNEx(second = SearchEx(str,format,"ss"))) return false;

if(parseInt(second,10) < 0 || parseInt(second,10) > 59) return false;

format = format.replace(/ss/,second);

}

 

if(format != str) return false;

 

return isValidDate(year,month,day);

}

//日期

function isNaNEx(str) {

if(str == "") return true;

if(isNaN(str)) return true;

if(str.indexOf(".") != -1) return true;

return false;

}

//日期

function SearchEx(source,pattern,str) {

var index = pattern.indexOf(str);

if(index == -1) return "error";

return source.substring(index,index + str.length);

}

//日期

function isValidDate(year,month,day) {

month = parseInt(month,10);

day = parseInt(day,10);

 

if(month < 1 || month > 12) return false;

if(day < 1 || day > 31) return false;

if((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) return false;

if (month == 2) {

var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));

if (day > 29 || (day == 29 && !leap)) return false;

}

return true;

}

 

 

//9.居民身份证号码(15或18位,最后一位数字或字母,其余数字,生日合法)

function isResidentID (s){

if(s.length!=15 && s.length!=18) return false;

if(!isAlphanumeric(s)) return false;

var birthday;

if(s.length==18){

if( !isInteger(s.substring(0,s.length-1)) ) return false;

birthday = s.substring(6,14);

}

if(s.length==15){

if( !isInteger(s) ) return false;

birthday = "19"+s.substring(6,12);

}

if(!isValidDate( birthday.substring(0,4), birthday.substring(4,6), birthday.substring(6,8) )) return false;

return true;

 

}

 

//字符串按格式重组(reformat("20021213","",4,"-",2,"-",2),会返回2002-12-13)

function reformat (s)

 

{ var arg;

var sPos = 0;

var resultString = "";

 

for (var i = 1; i < reformat.arguments.length; i++) {

arg = reformat.arguments[i];

if (i % 2 == 1) resultString += arg;

else {

resultString += s.substring(sPos, sPos + arg);

sPos += arg;

}

}

return resultString;

}

 

//10.电话号码( 数字和+,-,() )

function isPhoneNumber(s){

if(stripCharsInBag(s,"0123456789-()+")!="") return false;

return true;

}

 

//11.邮政编码

function isPostCode(s){

return(isInteger(s) && s.length==6);

}

 

//是否只包含合法的email字符

function isvalidEmailChar (s)

{ var i;

 

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

{

var c = s.charAt(i);

 

if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {

return false;

}

}

 

return true;

}

 

//12.是否合法的email

function isEmail (s)

{ if (isEmpty(s))

if (isEmail.arguments.length == 1) return defaultEmptyOK;

else return (isEmail.arguments[1] == true);

 

if (isWhitespace(s)) return false;

if (!isvalidEmailChar(s)) return false;

 

atOffset = s.lastIndexOf('@');

 

if ( atOffset < 1 )

return false;

else {

dotOffset = s.indexOf('.', atOffset);

 

if ( dotOffset < atOffset + 2 ||

dotOffset > s.length - 2 ) {

return false;

}

}

return true;

}

 

 

 

//13.一列checkbox中是否至少有一个checked,输入checkbox对象,输出 t or f

function isChecked(checkbox_name)

{

var items=checkbox_name.length;

if(items>1){

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

{

if(checkbox_name[i].checked==true) return true;

}

}

else

if(checkbox_name.checked==true) return true;

return false;

}

 

//14.一列checkbox中是否只有一个checked,输入checkbox对象,输出 t or f

function isCheckedOne(checkbox_name)

{

var items=checkbox_name.length;

var count=0;

if(items>1){

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

{

if(checkbox_name[i].checked==true) count++;

}

if(count==1) return true;

else

return false;

}

else

{

if(checkbox_name.checked==true) return true;

else

return false;

}

}

 

//15.一列checkbox中是否全部checked,输入checkbox对象,输出 t or f

function checkAll(checkbox_names,checkbox_select)

{

var items=checkbox_names.length;

if(items>1)

{

for(i=0;i<items;i++) checkbox_names[i].checked=checkbox_select.checked;

}

else

checkbox_names.checked=checkbox_select.checked;

}

 

 

 

 

//16.多个下拉框不能一样

function selectUnique(theForm)

{

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

{

e = theForm.elements[i];

if ( e.type=="select-one" && !e.isDisabled)

{

for(j=0; j<theForm.elements.length; j++)

{

e2 = theForm.elements[j];

if ( e2.type=="select-one" && !e2.isDisabled)

{

if(e!=e2 && e.options[e.selectedIndex].value==e2.options[e2.selectedIndex].value)

{

e.focus();

return false;

}

}

}

}

}

return true;

}

该文章转载自德仔工作室:http://www.dezai.cn/article_show.asp?ArticleID=5185

posted on 2008-12-23 15:13  Shorty  阅读(427)  评论(0)    收藏  举报

导航