从javascript添加多个函数onchange到相同的输入

时间:2010-06-25 09:18:32

标签: javascript html

我想在javascript中添加多个函数onchange到同一个输入。 有点像这样:

this.el = document.getElementById(this.docID);

if(x==y)
{

 this.el.onchange += function(){ // some code }

}
if(a==b)
{

 this.el.onchange += function(){  // some code }

}

4 个答案:

答案 0 :(得分:2)

如果你想链接onchange函数,你可以这样做:

this.el = document.getElementById(this.docID);

if(x==y) {
  this.el.onchange = function(){ // some code }
}

if(a==b) {
  var oldOnChange = this.el.onchange;
  this.el.onchange = function(){ 
    // execute previous onchange function
    if(oldOnChange) oldOnChange();

    // some code 
  }
}

像这样你也可以决定是否要在新的onchange代码之前或之后执行旧的onchange函数。

答案 1 :(得分:2)

您应该考虑使用addEventListener和其他DOM2方法,而不是使用onchange属性。有一些跨浏览器问题出现(即使使用onchange属性),所以我的建议是使用库,例如​​jQuery change事件观察者。

使用jQuery,您的代码示例如下所示:

this.el = document.getElementById(this.docID);

if(x==y) {
    $(this.el).change(function() { /* some code */ });
}
if(a==b) {
    $(this.el).change(function() { /* some code */ });
}

答案 2 :(得分:0)

你不能一起添加2个功能,代码错误。只有1个onchange函数。

所以你可以这样做:

this.el.onchange = function() {   
    if(x==y) {
        // some code
    } else if(a==b) {
        // some other code  
    }  
}

答案 3 :(得分:-1)

this.el.onchange调用一个main函数后调用你做比较并调用其他函数

this.el = document.getElementById(this.docID);

this.el.onchange += functionx();

functionx() {

if(x==y) {

this.el.onchange += functionY(){ // some code }

} if(a==b) {

this.el.onchange += functionZ(){ // some code }
}

}