Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Предыдущее значение select


Автор: nikolski 21.12.2011, 08:31
Доброго времени суток!

Имеем на странице фильтр (несколько селектбоксов), на который подвешен обработчик onChange(). В самом обработчике задается вопрос о том, действительно ли пользователь хочет поменять данные? И если он отвечает отрицательно, но надо вернуть старое значение.
Каким образом это можно сделать? Как можно узнать старое значение?

Код

function processFilterChanging(obj) {
     
        // var lastValue = ??;
     
        if (needFilterCheck == true) {
            var tsProjectsRow = dojo.query(".time_sheet_row");
            if (tsProjectsRow.length > 0) {
                if (!confirm("Данные на закладке 'Проекты' еще не записаны. Вы уверены?")) {
                    // obj.value = lastValue;
                }
            }
     
            var tsProjectsRow = dojo.query(".time_sheet_row_pre");
            if (tsProjectsRow.length > 0) {
                if (!confirm("Данные на закладке 'Пресейлы' еще не записаны. Вы уверены?")) {
                    // obj.value = lastValue;
                }
            }
        }
    }


Спасибо! Буду рад как конкретному решению, так и направлению куда рыть.

Автор: ksnk 21.12.2011, 09:37
Цитата(nikolski @  21.12.2011,  08:31 Найти цитируемый пост)
Имеем на странице фильтр (несколько селектбоксов), на который подвешен обработчик onChange().

Один и тот-же обработчик? Ставиться он так - 'onchange=processFilterChanging(this)'  ?


Цитата(nikolski @  21.12.2011,  08:31 Найти цитируемый пост)
надо вернуть старое значение.

В onchange его неоткуда взять, оно уже изменилось. Его надо где-то заранее сохранить.

Для простоты, можно вызвать все обработчики onchange при старте. Так как никаких изменений еще не было сделано, все они тикнут без особой пыли и шума. На jQuery это делается примерно так $('select').trigger('change') В dojo, вероятно, как-то так-же...
Код

function processFilterChanging(obj) {

       if(obj && obj.options && typeof(obj._lastValue)=='undefined')
             obj._lastValue = obj.options[obj.selectedIndex].value;

     
       ...

    }


Таким образом в каждом объекте будет сохранено его стартовое значение. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)