cnpeng

导航

分享43个非常实用的JS函数

/*
===========================================
//1.String.LTrim 去除左边的空格
//2.String.Rtrim去除右边的空格
//3.String.Trim去除前后空格
//4.String.Left(len)得到左边的字符串
//5.String.Right(len)得到右边的字符串
//6.String.Mid(start,len)得到中间的字符串,注意从0开始
//7.String.InStr(str)在字符串里查找另一字符串:位置从0开始
//8.String.InStrRev(str)在字符串里反向查找另一字符串:位置0开始
//9.String.LengthW()计算字符串打印长度
//10.String.isIP()是否是正确的IP地址
//11.String.isLongDate()是否是正确的长日期
//12.String.isShortDate()是否是正确的短日期
//13.String.isDate()是否是正确的日期
//14.String.isMobile()是否是手机
//15.String.isEmail()是否是邮件
//16.String.isZipCode()是否是邮编(中国)
//17.String.existChinese()是否是有汉字
//18.String.isUrl()是否是有效链接
//19.String.isIDCard()是否是有效的身份证(中国)
//20.String.isPhoneCall()是否是有效的电话号码(中国)
//21.String.isNumeric()是否是数字//1.去除左边的空格
//22.String.IsColor()是否是颜色(#FFFFFF形式)
//23.String.toCase()转换成全角
//24.String.toHtmlEncode()对字符串进行Html编码
//25.String.toDate()转换成日期
//26.String.isUrl()是否是有效链接
//27.Date.isLeapYear() 判断闰年  
//28.Date.Format(formatStr)日期格式化
//29.Date.DateAdd(strInterval, Number)日期计算
//30. Date.DateDiff(strInterval, dtEnd)比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串  
//31.Date.toString(toString)日期输出字符串,重载了系统的toString方法 // 32.daysBetween(DateOne,DateTwo) 求两个时间的天数差 日期格式为 YYYY-MM-dd
//33.IsValidDate(DateStr)日期合法性验证  
//34.CheckDateTime(str) 日期时间检查  
//35.Date.toArray()把日期分割成数组
//36.Date.DatePart(interval)取得日期数据信息
//37. Date.MaxDayOfDate()取得当前日期所在月的最大天数
//38.Date.WeekNumOfYear()取得当前日期所在周是一年中的第几周
//39.StringToDate(DateStr) 字符串转成日期类型
//40.String.isFileName()是否是合法的文件名/目录名
//41.getSelectValue(emid)获取下拉列表选中的值
//42. RemoveSelect(emid)删除下拉列表选中的值
//43.AddSelect(emid, Pos, strText, strValue)增加下拉列表的选项
===========================================

*/

<script type="text/javascript">
<!--
//1.String.LTrim 去除左边的空格

String.prototype.LTrim = function()
{
return this.replace(/(^\s*)/g, "");
}

//2.String.Rtrim去除右边的空格

String.prototype.Rtrim = function()
{
return this.replace(/(\s*$)/g, "");
}

//3.String.Trim去除前后空格

String.prototype.Trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}

//4.String.Left(len)得到左边的字符串

String.prototype.Left = function(len)
{
if(isNaN(len)||len==null)
{
len = this.length;
}
else
{
if(parseInt(len)<0||parseInt(len)>this.length)
{
len = this.length;
}
}

return this.substr(0,len);
}

//5.String.Right(len)得到右边的字符串

String.prototype.Right = function(len)
{

if(isNaN(len)||len==null)
{
len = this.length;
}
else
{
if(parseInt(len)<0||parseInt(len)>this.length)
{
len = this.length;
}
}

return this.substring(this.length-len,this.length);
}

//6.String.Mid(start,len)得到中间的字符串,注意从0开始

String.prototype.Mid = function(start,len)
{
return this.substr(start,len);
}

//7.String.InStr(str)在字符串里查找另一字符串:位置从0开始

String.prototype.InStr = function(str)
{

if(str==null)
{
str = "";
}

return this.indexOf(str);
}

//8.String.InStrRev(str)在字符串里反向查找另一字符串:位置0开始

String.prototype.InStrRev = function(str)
{

if(str==null)
{
str = "";
}

return this.lastIndexOf(str);
}

//9.String.LengthW()计算字符串打印长度

String.prototype.LengthW = function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
}

//10.String.isIP()是否是正确的IP地址

String.prototype.isIP = function()
{

var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;

if (reSpaceCheck.test(this))
{
this.match(reSpaceCheck);
if (RegExp.$1 <= 255 && RegExp.$1 >= 0
&& RegExp.$2 <= 255 && RegExp.$2 >= 0
&& RegExp.$3 <= 255 && RegExp.$3 >= 0
&& RegExp.$4 <= 255 && RegExp.$4 >= 0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}

}

//11.String.isLongDate()是否是正确的长日期

String.prototype.isLongDate = function()
{
var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
if(r==null)
{
return false;
}
var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);

}

//12.String.isShortDate()是否是正确的短日期

String.prototype.isShortDate = function()
{
var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)
{
return false;
}
var d = new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

//13.String.isDate()是否是正确的日期

String.prototype.isDate = function()
{
return this.isLongDate()||this.isShortDate();
}

//14.String.isMobile()是否是手机

String.prototype.isMobile = function()
{
return /^0{0,1}13[0-9]{9}$/.test(this);
}

//15.String.isEmail()是否是邮件

String.prototype.isEmail = function()
{
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this);
}

//16.String.isZipCode()是否是邮编(中国)

String.prototype.isZipCode = function()
{
return /^[\\d]{6}$/.test(this);
}

//17.String.existChinese()是否是有汉字

String.prototype.existChinese = function()
{
//[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號
return /^[\x00-\xff]*$/.test(this);
}

//18.String.isUrl()是否是有效链接

String.prototype.isUrl = function()
{
return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&=]*)?$/i.test(this);
}

//19.String.isIDCard()是否是有效的身份证(中国)

String.prototype.isIDCard = function()
{
var iSum=0;
var info="";
var sId = this;

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:"国外"};

if(!/^\d{17}(\d|x)$/i.test(sId))
{
return false;
}
sId=sId.replace(/x$/i,"a");
//非法地区
if(aCity[parseInt(sId.substr(0,2))]==null)
{
return false;
}

var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));

var d=new Date(sBirthday.replace(/-/g,"/"))

//非法生日
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
return false;
}
for(var i = 17;i>=0;i--)
{
iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);
}

if(iSum%11!=1)
{
return false;
}
return true;

}

//20.String.isPhoneCall()是否是有效的电话号码(中国)

String.prototype.isPhoneCall = function()
{
return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(this);
}

//21.String.isNumeric()是否是数字

String.prototype.isNumeric = function(flag)
{
//验证是否是数字
if(isNaN(this))
{

return false;
}

switch(flag)
{

case null: //数字
case "":
return true;
case "+": //正数
return /(^\+?|^\d?)\d*\.?\d+$/.test(this);
case "-": //负数
return /^-\d*\.?\d+$/.test(this);
case "i": //整数
return /(^-?|^\+?|\d)\d+$/.test(this);
case "+i": //正整数
return /(^\d+$)|(^\+?\d+$)/.test(this);
case "-i": //负整数
return /^[-]\d+$/.test(this);
case "f": //浮点数
return /(^-?|^\+?|^\d?)\d*\.\d+$/.test(this);
case "+f": //正浮点数
return /(^\+?|^\d?)\d*\.\d+$/.test(this);
case "-f": //负浮点数
return /^[-]\d*\.\d$/.test(this);
default: //缺省
return true;
}
}

//22.String.IsColor()是否是颜色(#FFFFFF形式)

String.prototype.IsColor = function()
{
var temp = this;
if (temp=="") return true;
if (temp.length!=7) return false;
return (temp.search(/\#[a-fA-F0-9]{6}/) != -1);
}

//23.String.toCase()转换成全角

String.prototype.toCase = function()
{
var tmp = "";
for(var i=0;i<this.length;i++)
{
if(this.charCodeAt(i)>0&&this.charCodeAt(i)<255)
{
tmp += String.fromCharCode(this.charCodeAt(i)+65248);
}
else
{
tmp += String.fromCharCode(this.charCodeAt(i));
}
}
return tmp
}

//24.String.toHtmlEncode()对字符串进行Html编码

String.prototype.toHtmlEncode = function()
{
var str = this;

str=str.replace(/&/g,"&amp;");
str=str.replace(/</g,"&lt;");
str=str.replace(/>/g,"&gt;");
str=str.replace(/\'/g,"&apos;");
str=str.replace(/\"/g,"&quot;");
str=str.replace(/\n/g,"<br>");
str=str.replace(/\ /g,"&nbsp;");
str=str.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");

return str;
}

//25.String.toDate()转换成日期

String.prototype.toDate = function()
{
try
{
return new Date(this.replace(/-/g, "\/"));
}
catch(e)
{
return null;
}
}

//26.String.isUrl()是否是有效链接

String.prototype.isUrl = function()
{
return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&=]*)?$/i.test(this);
}

//27.Date.isLeapYear() 判断闰年

Date.prototype.isLeapYear = function()
{
return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
}

//---------------------------------------------------
//
28.Date.Format(formatStr)日期格式化
//
格式 YYYY/yyyy/YY/yy 表示年份
//
MM/M 月份
//
W/w 星期
//
dd/DD/d/D 日期
//
hh/HH/h/H 时间
//
mm/m 分钟
//
ss/SS/s/S 秒
//
---------------------------------------------------

Date.prototype.Format = function(formatStr)
{
var str = formatStr;
var Week = ['日','一','二','三','四','五','六'];

str=str.replace(/yyyy|YYYY/,this.getFullYear());
str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));

str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());
str=str.replace(/M/g,this.getMonth());

str=str.replace(/w|W/g,Week[this.getDay()]);

str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());
str=str.replace(/d|D/g,this.getDate());

str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());
str=str.replace(/h|H/g,this.getHours());
str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());
str=str.replace(/m/g,this.getMinutes());

str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());
str=str.replace(/s|S/g,this.getSeconds());

return str;
}

//29.Date.DateAdd(strInterval, Number)日期计算

Date.prototype.DateAdd = function(strInterval, Number) {
var dtTmp = this;
switch (strInterval) {
case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));
case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));
case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));
case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));
case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
}
}

//30. Date.DateDiff(strInterval, dtEnd)比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串

Date.prototype.DateDiff = function(strInterval, dtEnd) {
var dtStart = this;
if (typeof dtEnd == 'string' )//如果是字符串转换为日期型
{
dtEnd = StringToDate(dtEnd);
}
switch (strInterval) {
case 's' :return parseInt((dtEnd - dtStart) / 1000);
case 'n' :return parseInt((dtEnd - dtStart) / 60000);
case 'h' :return parseInt((dtEnd - dtStart) / 3600000);
case 'd' :return parseInt((dtEnd - dtStart) / 86400000);
case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));
case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();
}
}

//31.Date.toString(toString)日期输出字符串,重载了系统的toString方法

Date.prototype.toString = function(showWeek)
{
var myDate= this;
var str = myDate.toLocaleDateString();
if (showWeek)
{
var Week = ['日','一','二','三','四','五','六'];
str += ' 星期' + Week[myDate.getDay()];
}
return str;
}

// 32.daysBetween(DateOne,DateTwo) 求两个时间的天数差 日期格式为 YYYY-MM-dd

function daysBetween(DateOne,DateTwo)
{
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);
var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));

var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));

var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);
return Math.abs(cha);
}

// 33.IsValidDate(DateStr)日期合法性验证
//
格式为:YYYY-MM-DD或YYYY/MM/DD

function IsValidDate(DateStr)
{
var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格;
if(sDate=='') return true;
//如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''
//数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式
var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');
if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D
{
var t=new Date(sDate.replace(/\-/g,'/'));
var ar = sDate.split(/[-/:]/);
if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())
{
return false;
}
}
else
{
return false;
}
return true;
}

// 34.CheckDateTime(str) 日期时间检查
//
格式为:YYYY-MM-DD HH:MM:SS

function CheckDateTime(str)
{
var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;
var r = str.match(reg);
if(r==null)return false;
r[2]=r[2]-1;
var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);
if(d.getFullYear()!=r[1])return false;
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
if(d.getHours()!=r[4])return false;
if(d.getMinutes()!=r[5])return false;
if(d.getSeconds()!=r[6])return false;
return true;
}

// 35.Date.toArray()把日期分割成数组

Date.prototype.toArray = function()
{
var myDate = this;
var myArray = Array();
myArray[0] = myDate.getFullYear();
myArray[1] = myDate.getMonth();
myArray[2] = myDate.getDate();
myArray[3] = myDate.getHours();
myArray[4] = myDate.getMinutes();
myArray[5] = myDate.getSeconds();
return myArray;
}

// 36.Date.DatePart(interval)取得日期数据信息
//
参数 interval 表示数据类型
//
y 年 m月 d日 w星期 ww周 h时 n分 s秒

Date.prototype.DatePart = function(interval)
{
var myDate = this;
var partStr='';
var Week = ['日','一','二','三','四','五','六'];
switch (interval)
{
case 'y' :partStr = myDate.getFullYear();break;
case 'm' :partStr = myDate.getMonth()+1;break;
case 'd' :partStr = myDate.getDate();break;
case 'w' :partStr = Week[myDate.getDay()];break;
case 'ww' :partStr = myDate.WeekNumOfYear();break;
case 'h' :partStr = myDate.getHours();break;
case 'n' :partStr = myDate.getMinutes();break;
case 's' :partStr = myDate.getSeconds();break;
}
return partStr;
}

//37. Date.MaxDayOfDate()取得当前日期所在月的最大天数

Date.prototype.MaxDayOfDate = function()
{
var myDate = this;
var ary = myDate.toArray();
var date1 = (new Date(ary[0],ary[1]+1,1));
var date2 = date1.dateAdd(1,'m',1);
var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));
return result;
}

// 38.Date.WeekNumOfYear()取得当前日期所在周是一年中的第几周

Date.prototype.WeekNumOfYear = function()
{
var myDate = this;
var ary = myDate.toArray();
var year = ary[0];
var month = ary[1]+1;
var day = ary[2];
document.write('< script language=VBScript\> \n');
document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') \n');
document.write('result = DatePart('ww', myDate) \n');
document.write(' \n');
return result;
}

// 39.StringToDate(DateStr) 字符串转成日期类型
//
格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd

function StringToDate(DateStr)
{

var converted = Date.parse(DateStr);
var myDate = new Date(converted);
if (isNaN(myDate))
{
//var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';
var arys= DateStr.split('-');
myDate = new Date(arys[0],--arys[1],arys[2]);
}
return myDate;
}

//40.String.isFileName()是否是合法的文件名/目录名

String.prototype.isFileName = function()
{
return !/[\\\/\*\?\|:"<>]/g.test(this);
}

//41.getSelectValue(emid)获取下拉列表选中的值

function getSelectValue(emid)
{
var selValue='';
var selObj = $(emid).options;
var len = selObj.length;
for(var i=0;i<len;i++)
{
if(selObj[i].selected)
selValue += selObj[i].value + ',';
}
if(selValue.substr(selValue.length-1,1)==',') selValue = selValue.substr(0,selValue.length-1)
return selValue;
}

//42. RemoveSelect(emid)删除下拉列表选中的值

function RemoveSelect(emid)
{
var selObj = $(emid).options;

for(var i=selObj.length;i>0;i--)
{
if(selObj[i-1].selected)
selObj.remove(i-1);
}
}

//43.AddSelect(emid, Pos, strText, strValue)增加下拉列表的选项

function AddSelect(emid, Pos, strText, strValue)
{
var selObj = $(emid).options;
if(selObj!=null)
{
var objOption = new Option(strText,strValue);
selObj.add(objOption,Pos);
}
}

//-->
</script>

 

posted on 2011-11-02 15:58  cnpeng  阅读(171)  评论(0)    收藏  举报