Предотвращение попадания событий onchange в бесконечный цикл - PullRequest
3 голосов
/ 12 января 2012

У меня есть два текстовых поля, одно представляет процент, а второе представляет соответствующую сумму.Теперь то, что я хочу, - когда процентные изменения меняются, сумма должна меняться, и когда сумма меняется, процент должен меняться соответственно.Я использую javascript.

В этом случае, если какой-либо из них изменится, начнется бесконечный цикл.

Что я хотел бы, чтобы при изменении суммы она соответственно меняла процент итогда цикл должен остановиться.А когда меняется процент, он должен соответственно изменить сумму, а затем цикл должен остановиться.Есть ли способ для этого?Может быть, что-то вроде stopPropagation?

Dummy JS Code:

Здесь value - это одно текстовое поле, а percentage - другое текстовое поле

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

Спасибо!!

Ответы [ 2 ]

7 голосов
/ 12 января 2012

Я все еще не вижу здесь проблемы, так как обработчик изменений не выполняется, когда содержимое изменяется программно.Я только что реализовал простую скрипку, чтобы показать, как она работает без зацикливания (используя jquery для простоты): http://jsfiddle.net/aWuks/

0 голосов
/ 12 января 2012

От макушки головы:

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' всегда будет игнорироваться.

...