Имеется 2 текстовых поля:
<input id="id_transfer_amount" name="transfer_amount" type="text">
<input id="id_amount_total" name="amount_total" type="text">
Оба поля отслеживаються при изменении и запускают один и тот же метод:
init: function() {
//...
new Form.Element.Observer($("id_transfer_amount"), 0.3, function () {
this.doOnlineRequest(false);
}.bind(this));
new Form.Element.Observer($("id_amount_total"), 0.3, function () {
this.doOnlineRequest(false);
}.bind(this));
//...
doOnlineRequest: function() {
if (($F("id_transfer_amount")) { // ajax xhr, после которого меняем значение amount_total }
if (($F("id_amount_total")) { // ajax xhr, после которого меняем значение transfer_amount }
}
Суть проблемы в том, что когда мы вводим значение в transfer_amount, например, 2е поле заполняется, тут же срабатывает обработчик события и выполняет doOnlineRequest второй раз, но для полученного из 1го поля значения, после чего затирает то, что мы вводили в 1м поле..
Как можно решить данную проблему? Пробовал вызывать обработчики при фокусе на поле, различные проверки, результат тот же.
Использую Prototype 1.6.