предыдущее значение 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, время: 17:19. |