Javascript.RU

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

Перебор значений списка select/option
Здравствуйте, уважаемые форумчане. Прошу вашей помощи в следующем вопросе.
Есть набор данных, выбранных из MySQL, которые выводятся в select/option. Задача формы - пользователь должен расставить данные по приоритетности.
<form>
Расставьте значения по приоритету (назовем ее так)<br>
На первом месте
<select>
<option></option>
<option>Деньги</option>
<option>Семья</option>
<option>Здоровье</option>
</select>
На втором месте
<select>
<option></option>
<option>Деньги</option>
<option>Семья</option>
<option>Здоровье</option>
</select>
На третьем месте
<select>
<option></option>
<option>Деньги</option>
<option>Семья</option>
<option>Здоровье</option>
</select>
</form>

Как сделать, чтобы пользователь мог выбрать пункт "деньги" только в одном select-е? Выбрал в первом - в остальных пропало. Поставил в первом на "семью" - "деньги" восстановились в остальных.
Моя мысль - загрузить данные в один массив, а потом оттуда тянуть в select-ы. При событии onchange деактивировать строку массива или перенести эту строку в другой массив. При смене выбора перенесенную/неактивную строку возвращать, выбранную убирать. Но я не знаю, как это сделать технически. Буду благодарен за помощь или ссылку на учебную информацию.
Ответить с цитированием
  #2 (permalink)  
Старый 27.11.2012, 13:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Игося
Как сделать, чтобы пользователь мог выбрать пункт "деньги" только в одном select-е? Выбрал в первом - в остальных пропало. Поставил в первом на "семью" - "деньги" восстановились в остальных.
Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function test(Obj) {
	var typ=(Obj.options[Obj.selectedIndex].innerHTML=='Деньги');
	var os=Obj.parentNode.getElementsByTagName('select');
	var i;
	for (i=0; i<os.length; i++) {
		if (os[i]!=Obj) {
			os[i].disabled=typ;
		}
	};
};	
</script>
</head>
<body>
<form>
	<p>Расставьте значения по приоритету (назовем ее так)<br>
		На первом месте
	</p>
	<select onchange='test(this)'>
		<option></option>
		<option>Деньги</option>
		<option>Семья</option>
		<option>Здоровье</option>
	</select>
	<p>На втором месте</p>
	<select onchange='test(this)'>
	<option></option>
		<option>Деньги</option>
		<option>Семья</option>
		<option>Здоровье</option>
	</select>
	<p>На третьем месте</p>
	<select onchange='test(this)'>
		<option></option>
		<option>Деньги</option>
		<option>Семья</option>
		<option>Здоровье</option>
	</select>
</form>
</body>
</html>

Последний раз редактировалось ksa, 27.11.2012 в 13:42.
Ответить с цитированием
  #3 (permalink)  
Старый 27.11.2012, 13:52
Интересующийся
Отправить личное сообщение для Игося Посмотреть профиль Найти все сообщения от Игося
 
Регистрация: 13.09.2012
Сообщений: 13

ksa, в данном варианте disabled запрещает сам select, а не один option - из него вообще ничего нельзя выбрать.
Ответить с цитированием
  #4 (permalink)  
Старый 27.11.2012, 13:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Игося
в данном варианте disabled запрещает сам select, а не один option - из него вообще ничего нельзя выбрать
Далее сам смотри... И делай соответствующие выводы.

Либо твоя оплата.
Ответить с цитированием
  #5 (permalink)  
Старый 27.11.2012, 16:41
Аватар для Margarita
Аспирант
Отправить личное сообщение для Margarita Посмотреть профиль Найти все сообщения от Margarita
 
Регистрация: 14.09.2012
Сообщений: 83

<script>
        function change_me(option) {
                var stirng = $(option).find("option:selected").val();
                var index = $("#task1 select").index(option);
                if(index==0) {
                    $("#task1 select option").removeAttr("disabled");
                }
                for(var k=1; k<$("select").length; k++) {
                $("#task1 select").eq(k).find("option").each(function() {               
                    if($(this).val() == stirng) {
                        $(this).attr("disabled", "disabled");
                    }
                });       
                }
        }
 </script>
<form id="task1">
Расставьте значения по приоритету (назовем ее так)<br>
На первом месте
<select onchange="change_me(this);">
<option></option>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор значений выпадающего списка через select/option Игося jQuery 2 14.09.2012 10:09
Получение списка значений форм slowkazak Серверные языки и технологии 10 27.05.2012 21:00
Динамическое добавление выпадающего списка В IE stepennwolf Internet Explorer 3 04.11.2011 17:36
перебор всех возможных значений Yurik Общие вопросы Javascript 3 04.08.2011 14:25
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40