JavaScript应用实践(一)之实用函数

(一)通过正则表达式验证日期

var expression = /^(
(
	((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-
)
)$/;   //验证日期的正则表达式
function checkdate(str){
	var expression = /^((((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-))$/;
	var objreg = new RegExp(expression);
	if (objreg.test(str)) {
		return true;
	} else{
		return false;
	}
}

(二)检查表单元素是否为空

function checkform(form){
	for (var i = 0; i < form.length; i++) {
		if (form.elements[i].value=="") {
			alert(form.elements[i].title+"不能为空!");
			form.elements[i].focus();
			return;
		}
	}
	form.submit();
}

(三)验证E-mail是否正确

var expression = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
function checkemail(str){
	var expression = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	var objreg = new RegExp(expression);
	if (objreg.test(str)) {
		return true;
	} else{
		return false;
	}
}

(四)验证电话号码是否正确


(五)验证身份证号码是否正确

var expression = /^\d{17}[\d|X]|^\d{15}$/;
function checkenum(str){
	var expression = /^\d{17}[\d|X]|^\d{15}$/;
	var objreg = new RegExp(expression);
	if (objreg.test(str)) {
		return true;
	} else{
		return false;
	}
}

(六)验证用户名及密码是否正确

//由3-10位的字母、数字和下划线组成的正则表达式
var expression = /^(\w){3,10}$/;
//由6-20位的字母、数字、下划线和点“.”组成的正则表达式
var expression = /^[A-Za-z]{1}[A-Za-z0-9]|[.]{5,19}$/;

(七)随机产生指定位数的验证码

function checkcode (digit) {
	var result="";
	for (var i = 0; i < parseInt(digit); i++) {
		result = result+(parseInt(Math.random()*10)).toString;
	}
	return result;
}

(八)显示长日期格式的系统日期

function clock (bgclock) {
	var now = new Date();
	var year = now.getYear();
	var month = now.getMonth()+1;
	var date = now.getDate();
	var day = now.getDay();
	if (month<10) {
		month = "0" + month;
	}if (date<10){
		date = "0" + date;
	}
	var arr_week = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
	var week = arr_week[day];
	var time = year+"年"+month+"月"+date+"日"+week;
	if (document.all) {
		bgclock.innerHTML = time;
	}
	var timer = setTimeout("clock(bgclock)",200);
}

(九)显示实时系统日期时间

function clock (bgclock) {
	var now = new Date();
	var year = now.getYear();
	var month = now.getMonth()+1;
	var date = now.getDate();
	var day = now.getDay();
	var hour = now.getHours();
	var minute = now.getMinutes();
	var second = now.getSeconds();
	if (month<10) {
		month = "0" + month;
	}if (date<10){
		date = "0" + date;
	}if (hour<10) {
		hour = "0" + hour;
	}if (minute<10) {
		minute = "0" + minute;
	}if (second<10) {
		second = "0" + second;
	}
	var arr_week = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
	var week = arr_week[day];
	var time = year+"年"+month+"月"+date+"日"+week+" "+hour+":"+minute+":"+second;
	if (document.all) {
		bgclock.innerHTML = time;
	}
	var timer = setTimeout("clock(bgclock)",200);
}

(十)导航条图片动画效果

function move (image,num) {
	image.src = "image" + num + "_big.png"
}
function out (image,num) {
	image.src = "image" + num + "_small.png"
}
<img src="image0_small.png" οnmοusemοve="move(this,0)" οnmοuseοut="out(this,0)">

(十一)半透明背景的下拉菜单

var menuoffx=0;  //菜单距链接文字最左端的距离
var menuoffy=18;  //菜单距链接文字顶端的距离
var fo_shadows = new Array();
var linkset = new Array();
var IE4 = document.all&&navigator.userAgent.indexOf("Opera")==-1;
var netscape6 = document.getElementById&&!document.all;
var netscape4 = document.layers;

function showmenu (e,vmenu,mod) {
	if(!document.all&&!document.getElementById&&!document.layers){
		return;
	}
	which = vmenu;
	clearhidemenu();
	IE_clearshadow();
	menuobj = IE4?document.all.popmenu:netscape6?document.getElementById("popmenu"):netscape4?document.popmenu:"";
	menuobj.thestyle = (IE4||netscape6)?menuobj.style:menuobj;
	if (IE4||netscape6) {
		menuobj.innerHTML = which;
	}else{
		menuobj.document.write('<layer name="other" bgColor="#E6E6E6" width="165" οnmοuseοver="clearhidemenu()"
			οnmοuseοut="hidemenu()">'+which+'</layer>')
		menuobj.document.close();
	}
	menuobj.contentwidth = (IE4||netscape6)?menuobj.offsetWidth:menuobj.document.other.document.width;
	menuobj.contentheight = (IE4||netscape6)?menuobj.offsetHeight:menuobj.document.other.document.height;
	eventx = IE4?event.clientX:netscape6?event.clientX:e.x;
	eventy = IE4?event.clientY:netscape6?event.clientY:e.y;
	var rightedge = IE4?document.body.clientWidth-eventx:window.innerWidth-eventx;
	var bottomedge = IE4?document.body.clientHeight-eventy:window.innerHeight-eventy;

	if (rightedge<menuobj.contentwidth) {
		menuobj.thestyle.left = IE4?document.body.scrollLeft+eventx-menuobj.contentwidth+menuoffx:netscape6?
		window.pageXOffset+eventx-menuobj.contentwidth:eventx-menuobj.contentwidth;
	}else{
		menuobj.thestyle.left = IE4?IE_x(event.srcElement)+menuoffx:netscape6?window.pageXOffset+eventx:eventx;
	}
	if (bottomedge<menuobj.contentheight&&mod!=0) {
		menuobj.thestyle.top = IE4?document.body.scrollTop+eventy-menuobj.contentheight-event.offsetY+menuoffy-23:netscape6?
		window.pageYOffset+eventy-menuobj.contentheight-10:eventy-menuobj.contentheight;
	}else{
		menuobj.thestyle.top = IE4?IE_y(event.srcElement)+menuoffy:netscape6?window.pageYOffset+eventy+10:eventy;
	}
	menuobj.thestyle.visibility = "visible";
	IE_dropshadow(menuobj,"#999999",3);
	return false;
}	

function hidemenu () {
	if (window.menuobj) {
		menuobj.thestyle.visibility = (IE4||netscape6)?"hidden":"hide";
	}
	IE_clearshadow();
}
function clearhidemenu () {
	if (window.delayhide) {
		clearTimeout(delayhide);
	}
}
function dynamichide (e) {
	if (IE4&&!menuobj.contains(e.toElement)) {
		hidemenu();
	}else if(netscape6&&e.currentTarget!=e.relatedTarget&&!contains_netscape6(e.currentTarget,e.relatedTarget)){
		hidemenu();
	}
}
function delayhidemenu () {
	if (IE4||netscape6||netscape4) {
		delayhide = setTimeout("hidemenu()",500);
	};
}
function highlightmenu (e,state) {
	if (document.all) {
		source_el = event.srcElement;
	}else if (document.getElementById) {
		source_el = e.target;
	}
	if (source_el.className=="menuitems") {
		source_el.id=(state=="on")?"mouseoverstyle":"";
	}else{
		while(source_el.id!="popmenu"){
			source_el=document.getElementById?source_el.parentNode:source_el.parentElement;
			if (source_el.className=="menuitems") {
				source_el.id=(state="on")?"mouseoverstyle":"";
			}
		}
	}
}
function IE_y (e) {
	var t = e.offsetTop;
	while(e=e.offsetParent){
		t+=e.offsetTop;
	}
	return t;
}
function IE_x (e) {
	var l = e.offsetLeft;
	while(e=e.offsetParent){
		l+=e.offsetLeft;
	}
	return l;
}
function IE_dropshadow (el,color,size) {
	for (var i = size; i>0; i--) {
		var rect = document.getElementById('div');
		var rs = rect.style;
		rs.position = 'absolute';
		rs.left = (el.style.posLeft+i)+'px';
		rs.top = (el.style.posTop+i)+'px';
		rs.width = el.offsetWidth+'px';
		rs.height = el.offsetHeight+'px';
		rs.zIndex = el.style.zIndex-i;
		rs.backgroundColor = color;
		var opacity = 1-i/(i+1);
		rs.filter = 'alpha(opacity='+(100*opacity)+')';
		fo_shadows[fo_shadows.length] = rect;
	}
}
function IE_clearshadow () {
	for (var i = 0; i < fo_shadows.length; i++) {
		if(fo_shadows[i])
			fo_shadows[i].style.display = "none";
	}
	fo_shadows[i] = new Array();
}
<div id="popmenu" class="menuskin" οnmοuseοver="clearhidemenu();highlightmenu(event,'on')"
	οnmοuseοut="highlightmenu(event,'off');dynamichide(event)">
</div>
(十二)收缩式侧导航条

function show (obj,maxg,obj2) {
	if (obj.style.pixelHeight<maxg) {
		obj.style.pixelHeight+=maxg/10;
		obj.filter.alpha.opacity +=20;
		if (obj.style.pixelHeight==maxg/10) {
			obj.style.display='block';
		}
		myObj = obj;
		mymaxg = maxg;
		myObj2 = obj2;
		setTimeout('show(myObj,mymaxg,myObj2)','5');
	}
}
function hide (obj,maxg,obj2) {
	if (obj.style.pixelHeight>0) {
		if (obj.style.pixelHeight==maxg/5) {
			obj.style.display='none';
			obj.style.pixelHeight -= maxg/5;
			obj.filter.alpha.opacity -=10;
			myObj = obj;
			mymaxg = maxg;
			myObj2 = obj2;
			setTimeout('hide(myObj,mymaxg,myObj2)','5');
		}
	}else if (whichContinue) {
			whichContinue.click();
	}
}
function chang (obj,maxg,obj2) {
	if (obj.style.pixelHeight) {
		hide(obj,maxg,obj2);
		nopen="";
		whichContinue="";
	}else if (nopen) {
		whichContinue=obj2;
		nopen.click();
	}else{
		show(obj,maxg,obj2);
		nopen=obj2;
		whichContinue="";
	}
}
<TD class="list_title" id="list" οnmοuseοver="this.typename='list_title2'" οnmοuseοut="this.typename='list_title'" οnclick="chang(menu1,60,list1)"><span></span></TD>

(十三)带记忆功能的表单

<!DOCTYPE html>
<html>
<head>
	<title>记忆功能</title>
	<meta name="save" content="history">
	<style type="text/css">
		.savehistory{
			behavior:url(#default#savehistory);
		}
	</style>
</head>
<body>
	<input name="txt_unit" type="text" class="savehistory">
	<input name="txt_co" type="text" class="savehistory">
</body>
</html>
(十四)防止表单重复提交
<input name="submit" type="button" οnclick="this.disabled=true;this.form.submit();">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值