js给文本框动态绑定onblur方法,失焦的时候触发

//以下以失焦时,去掉文本框对应值的前后空格为例;此外存在局部刷新元素也适应,局部刷新后再调用此方法即可。
var funMap = {};//记录页面变动之前的所有元素原始onblur方法
var tmpMap = null;//以元素name为key存储onblur方法,存在当前页面原始onblur方法;
function bindOnblurEvent(){//绑定对象类型input(type=text) texttarea
	var elements = document.getElementsByTagName('form')[0];
	tmpMap = {};
	if(elements != null){
		for ( var i = 0; i < elements.length; i++) {
			if(elements[i].type == "text" || elements[i].type == "textarea"){
				
				//若有原始onblur,则存入funArr,并放入temMap;
				if(elements[i].onblur != null){
					var tmp = (elements[i].onblur+"").replace(/(\n)+|(\r\n)+/g, "");
					var oldFun = funMap[elements[i].name];//通过name获取原始的onblur方法
					var newFun = tmp.substring(tmp.indexOf("{")+1,tmp.indexOf("}"));
					//防止原始onblur方法被覆盖
					var addFun = typeof oldFun!="undefined" ? oldFun:newFun;
					//当第二次触发bindOnblurEvent()时,当前onblur方法为addOnblurFun()时,不保存(原始onblur为空)
					if(!(addOnblurFun.toString().replace(/(\n)+|(\r\n)+/g, "").indexOf(addFun) > 0)){
						tmpMap[elements[i].name] = addFun;
					}
				}
				//给onblur绑定新的方法
				elements[i].onblur = addOnblurFun;
			}
		}		
		funMap = tmpMap;
	}
}

function addOnblurFun(){
	//input texttarea 所输入的字符串去掉前后空格
	this.value = this.value.replace(/(^\s*)|(\s*$)/g, "");
	
	//调用原始的onblur方法
	//根据当前元素在form表单的位置,从funArr获取原始的onblur方法并调用
	var fun = tmpMap[this.name];
	if(typeof fun != "undefined"){
		//alert("fun = "+fun);
		eval(fun);
	}
}




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值