Javascript.RU

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

Содержимое option по клику на select
Есть n select-ов с одинаковым списком из к примеру 20 пунктов. Когда я выбираю в одном из списков какой-либо пункт - он должен исчезнуть из всех других select-ов.

Если бы это было к примеру div-ами, то я реализую через $('#div' + i).hide(); Так как мы кликнули на i-й пункт. Но проблема в том, что select-ов много (к примеру 200), и все их обновлять долго и глупо.

Я хочу при выборе одного инпута hide-ить его из единого списка, а при клике на следующий select загружать в option только ввидимые пункты. Есть ли более изящное решение? Перетаскивание и один селект не подходит к решению конкретной задачи, я вижу это пока только модальным окном с видимым списком, хотелось бы сделать с помощью select.
Вопрос 1. Как в js можно сделать hide конкретного option?
Вопрос 2. Можно ли при клике на option Выбрать подгрузить список видимых пунктов в select?
Ответить с цитированием
  #2 (permalink)  
Старый 18.04.2017, 13:37
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Ответ на вопрос 1
<select>
  <option >---</option>
  <option value="1">Пункт 1</option>
  <option value="2">Пункт 2</option>
  <option value="3">Пункт 3</option>
</select>
<select>
   <option >---</option>
  <option value="1">Пункт 1</option>
  <option value="2">Пункт 2</option>
  <option value="3">Пункт 3</option>
</select>
<select>
   <option >---</option>
  <option value="1">Пункт 1</option>
  <option value="2">Пункт 2</option>
  <option value="3">Пункт 3</option>
</select>
<script>
var sel = document.getElementsByTagName('select');
for(var i = 0;i < sel.length; i++) {
   sel[i].onchange = function(e) { 
       if(e.target.value == "---") {
          var opt=document.getElementsByTagName('option');
          for(var j = 0;j < opt.length; j++) {
             opt[j].removeAttribute("hidden");
          }
       }
       else {
          for(var j = 0;j < sel.length; j++) {
             if(e.target != sel[j])  {
                sel[j].querySelector('option[value="' + e.target.value + '"]').setAttribute("hidden", "hidden");
             } 
          }
       }
   }
}
</script>

Вопрос 2 не осилил

Последний раз редактировалось Dilettante_Pro, 18.04.2017 в 13:50.
Ответить с цитированием
  #3 (permalink)  
Старый 18.04.2017, 13:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от wwonder
Как в js можно сделать hide конкретного option?
Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('select').eq(0).change(function(){
		var o=$(this).next().find('option');
		o.show().eq(this.selectedIndex).hide();
	});
});
</script>
</head>
<body>
<select>
	<option></option>
	<option>1</option>
	<option>2</option>
	<option>3</option>
</select>
<select>
	<option></option>
	<option>1</option>
	<option>2</option>
	<option>3</option>
</select>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2017, 13:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от wwonder
Можно ли при клике на option Выбрать подгрузить список видимых пунктов в select?
Переведи. (с)
Ответить с цитированием
  #5 (permalink)  
Старый 18.04.2017, 14:07
Интересующийся
Отправить личное сообщение для wwonder Посмотреть профиль Найти все сообщения от wwonder
 
Регистрация: 09.09.2016
Сообщений: 28

Ну единый список с видимыми option у нас есть, как его подгрузить в селект при клике?
Ответить с цитированием
  #6 (permalink)  
Старый 18.04.2017, 14:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

wwonder,
Сообщение от wwonder
Ну единый список с видимыми option у нас есть, как его подгрузить в селект при клике?
Единый список один для всех - по условию первого поста. В совокупности селектов видны всегда все пункты из списка.
Поэтому вопрос решается снятием hidden - смотри пост 2 опция ---
Можно выполнять для конкретного кликнутого селекта

Последний раз редактировалось Dilettante_Pro, 18.04.2017 в 14:28.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение из select option vnmslf jQuery 19 21.07.2016 12:09
Подправьте скрипт, в одну строчку :)(Выбор Option в динамическом Select) ScribaXXI Общие вопросы Javascript 1 10.02.2016 07:32
Java Script, совместная работа textarea с select option Алекс_ Элементы интерфейса 1 12.05.2015 08:13
Показать/скрыть большое колличество option внутри select game_Racer jQuery 4 07.04.2013 20:12
Динамические option в select lurii Элементы интерфейса 10 14.01.2011 11:23