Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2011, 09:15
Новичок на форуме
Отправить личное сообщение для nikolski Посмотреть профиль Найти все сообщения от nikolski
 
Регистрация: 21.12.2011
Сообщений: 2

предыдущее значение 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;
			}
		}
	}
}


Спасибо! Буду рад как конкретному решению, так и направлению куда рыть.
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2011, 11:17
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

можно так,
это на 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>
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2011, 12:35
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

попробовал на 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>
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2011, 06:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #5 (permalink)  
Старый 22.12.2011, 09:29
Новичок на форуме
Отправить личное сообщение для nikolski Посмотреть профиль Найти все сообщения от nikolski
 
Регистрация: 21.12.2011
Сообщений: 2

Спасибо, попробую!
Ответить с цитированием
  #6 (permalink)  
Старый 22.12.2011, 11:03
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Вопрос к знающим (задал здесь, т.к. близко к теме)

в http://learn.javascript.ru/tutorial/form-elements
в разделе 'select'
есть фраза
'Элементы типа select ....... поддерживают свойство value, но только на чтение. '

это опечатка ?

Последний раз редактировалось Pavel M., 22.12.2011 в 11:09.
Ответить с цитированием
  #7 (permalink)  
Старый 22.12.2011, 14:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Pavel M.,
value селекта можно установить только из имеющихся value его options, в некоторых браузерах например Mozilla Firefox при отсутствии у options value значение ищется среди options = > text, если подходящее для установки значение ненайдено обычно остаётся прежнее значение или пусто.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить предыдущее значение select? MaxD Общие вопросы Javascript 3 21.07.2011 12:36
поле SELECT и его значение vah-smile Элементы интерфейса 6 05.11.2010 00:42
Изменить значение переменной функции через select Fenec Элементы интерфейса 5 13.08.2010 15:32
Значение тэга select blasted Элементы интерфейса 4 07.07.2010 14:45
Как вывести на экран значение функции SELECT MAX(id) Владдд Серверные языки и технологии 3 25.01.2009 16:07