предыдущее значение select
Доброго времени суток!
Имеем на странице фильтр (несколько селектбоксов), на который подвешен обработчик 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; } } } } Спасибо! Буду рад как конкретному решению, так и направлению куда рыть. |
можно так,
это на jquery - на dojo можно переделать <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>demo</title> <script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script> <script> $(function(){ var jSelect = $('select'), oldVal = jSelect.val(); jSelect.change(function () { if (!confirm("Поменять данные")) { $(this).val(oldVal); // возврат старого значения } oldVal = $(this).val(); // запоминаем текущее }); }); </script> </head> <body> <select> <option>1</option> <option>2</option> <option>3</option> </select> </body> </html> |
попробовал на dojo - знаю плохо
если у select установлен атрибут multiple надо будет доработать <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>demo</title> <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js.uncompressed.js'></script> <script> dojo.ready(function() { var dSelect = dojo.query('select'), oldIndex = dSelect[0].selectedIndex; dSelect.onchange(function () { if (!confirm("Поменять данные")) { this.selectedIndex = oldIndex; // возврат старого значения } oldIndex = this.selectedIndex; // запоминаем текущее }); }); </script> </head> <body> <select> <option>1</option> <option>2</option> <option>3</option> </select> </body> </html> |
nikolski,
Вариант ... <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <title></title> </head> <body> <select name="fg" onchange="fn()" > <option value="zero" >- выберите -</option> <option value="aaa" >aaa</option> <option value="bbb" >bbb</option> <option value="ссс" >ccc</option> <option value="ddd" >ddd</option> </select> <script type="text/javascript"> var fn = function () { var a = document.getElementsByName("fg")[0], b = a.options[a.selectedIndex||0].value; return function () { return confirm("Вы уверены") ? b = a.value : a.value = b } }(); </script> </body> </html> |
Спасибо, попробую!
|
Вопрос к знающим (задал здесь, т.к. близко к теме)
в http://learn.javascript.ru/tutorial/form-elements в разделе 'select' есть фраза 'Элементы типа select ....... поддерживают свойство value, но только на чтение. ' это опечатка ? |
Pavel M.,
value селекта можно установить только из имеющихся value его options, в некоторых браузерах например Mozilla Firefox при отсутствии у options value значение ищется среди options = > text, если подходящее для установки значение ненайдено обычно остаётся прежнее значение или пусто. |
Часовой пояс GMT +3, время: 09:41. |