防止onchange事件进入无限循环

时间:2012-01-12 10:47:55

标签: javascript events event-handling onchange

我有两个文本字段,一个表示百分比,第二个表示相应的数量。现在我想要的是,当百分比改变时,金额应该改变,当金额改变时,百分比应该相应地改变。我正在使用javascript。

在这种情况下,如果其中任何一个发生变化,将启动无限循环。

我想要的是,当金额发生变化时,应该相应地改变百分比,然后循环应该停止。当百分比改变时,它应该相应地改变量,然后循环应该停止。这有什么办法吗?也许像stopPropagation

虚拟JS代码:

此处value是一个文本框,percentage是另一个文本框

function valueChng(){
    percentage.value = "" + someInteger;
}
function percentageChng(){
    value.value = "" + someInteger;
}

谢谢!

2 个答案:

答案 0 :(得分:7)

我仍然没有看到问题,因为在以编程方式更改内容时不会执行更改处理程序。我只是实现了一个简单的小提示,以显示它是如何工作而不进入无限循环(为简单起见使用jquery): http://jsfiddle.net/aWuks/

答案 1 :(得分:0)

从头到尾:

var changedFlag = false;

function valueChng(){
    if(changedFlag == true) {
      changedFlag = false;
      return;
    }

    percentage.value = "" + someInteger;
    changedFlag = true;
}
function percentageChng(){
    if(changedFlag == true) {
      changedFlag = false;
      return;
    }

    value.value = "" + someInteger;
    changedFlag = true;
}

这样,两个'onchange'事件中的第二个将始终被忽略。