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

来源:互联网 发布:java方法名长度 编辑:程序博客网 时间:2024/06/05 19:04

以下以失焦时,去掉文本框对应值的前后空格为例;此外存在局部刷新元素也适应,局部刷新后再调用此方法即可。

var funMap = {};//记录页面变动之前的所有元素原始onblur方法var tmpMap = null;//以元素name为key存储onblur方法,存在当前页面原始onblur方法;function bindOnblurEvent(){//绑定对象类型input(type=text) texttareavar 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 0