添加第二个onChange事件?

时间:2011-07-26 14:22:45

标签: javascript onchange

您好我在网上找到了这个脚本,它为一个元素添加了一个onChange事件,我想现在向同一个元素添加第二个onChange事件。继承剧本:

document.getElementById('piname').onchange =
function() {
    removeChildren({
        parentId: 'account_table',
        childName: 'extraaccount'
    });
}

我要添加的onChange事件是:

showAccount(this.value)

2 个答案:

答案 0 :(得分:5)

如果需要,请使用addEventListener()(和attachEvent作为后备广告。) 例如:

document.getElementById('piname').addEventListener("change", function(e){
  e = e || event;
  showAccount(e.target.value);
}, false);

示例,有后备:

var element = document.getElementById('piname');
if(element.addEventListener){
  element.addEventListener("change", function(e){
    e = e || event;
    showAccount(e.target.value);
  }, false);
}
else if(element.attachEvent){
  element.attachEvent("onchange", function(e){
    e = e || event;
    showAccount(e.target.value);
  });
}

答案 1 :(得分:2)

最简单的方法是缓存旧函数并从新函数中调用它:

var el = document.getElementById('piname'),
    old = el.onchange;

el.onchange = function () {
    old.call(el);
    showAccount(this.value);
}

除此之外,您可以使用addEventListener(W3C标准)和attachEvent(IE8及更低版本):

var el = document.getElementById('piname'),
    fn = function (e) {
         e = e || window.event;
         showAccount((e.target || e.srcElement).value); 
    };

if ("addEventListener" in el) {
    el.addEventListener("change", fn, false);
}
else {
    el.attachEvent("onchange", fn);
}

这些方法允许您根据需要为事件附加尽可能多的处理程序。