Javascript.RU

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

снятие заблокированных option в select
Народ помогите добавить условие, чтоб при нажатии "Кнопка 2", не блокировался список select. Но "Кнопка 2" работала в прежнем режиме.
Код:
<div class="group">
<label class="primary">
<input data-select="3" type="button">Кнопка 1</label>
<label class="primary">
<input data-select="4" type="button">Кнопка 2</label>
</div>
     <select id="select">
        <option value="1">Выбор пункта 1</option>
        <option value="2">Выбор пункта 2</option>
        <option value="3">Выбор пункта 3</option>
        <option value="4">Выбор пункта 4</option>
        <option value="5">Выбор пункта 5</option>
        <option value="6" checked >Выбор пункта 6</option>
</select>
<script type="text/javascript">
 document.getElementsByClassName('group')[0].addEventListener('click', function(evt) {
    var elem = evt.target;
    if (elem.hasAttribute('data-select')) {
      let select = document.getElementById('select');
      select.value = elem.getAttribute('data-select');
      
      let options = select.getElementsByTagName('option');
      
      Array.from(options, (option, i) => options[i].disabled = (option.value !== select.value ? true : false));

      
      var elem = document.getElementById('select');
      var event = new Event('change');
      elem.dispatchEvent(event);
    }

  }, false);
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2018, 17:28
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Ну так удалите из скрипта 10 строку:
Array.from(options, (option, i) => options[i].disabled = (option.value !== select.value ? true : false));

Кнопки будут работать, пункты в селекте блокироваться не будут.
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2018, 17:35
Новичок на форуме
Отправить личное сообщение для olegan4eg88 Посмотреть профиль Найти все сообщения от olegan4eg88
 
Регистрация: 25.11.2018
Сообщений: 9

Извините я ошибся в описании цели.
При нажатии "Кнопка 2", не блокировался список select. Но "Кнопка 1" работала в прежнем режиме.
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2018, 17:54
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<div class="group">
	<label class="primary">
		<input data-select="3" type="button">Кнопка 1</label>
		<label class="primary">
			<input data-select="4" type="button">Кнопка 2</label>
		</div>
		<select id="select">
			<option value="1">Выбор пункта 1</option>
			<option value="2">Выбор пункта 2</option>
			<option value="3">Выбор пункта 3</option>
			<option value="4">Выбор пункта 4</option>
			<option value="5">Выбор пункта 5</option>
			<option value="6" checked>Выбор пункта 6</option>
		</select>

		<script>
			document.querySelector('[data-select="3"]').addEventListener('click', function(evt){
				var sel = document.querySelector('#select'),
				val = this.dataset.select;
				sel.querySelectorAll('#select option').forEach((el,i)=>{
					if(i!=val-1) el.disabled = true;
				});
				sel.value = val;
			});
		</script>


так?
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2018, 18:08
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Вот так?
<div class="group">
    <label class="primary">
        <input data-select="3" type="button">Кнопка 1</label>
    <label class="primary">
        <input data-select="4" type="button">Кнопка 2</label>
</div>
<select id="select">
    <option value="1">Выбор пункта 1</option>
    <option value="2">Выбор пункта 2</option>
    <option value="3">Выбор пункта 3</option>
    <option value="4">Выбор пункта 4</option>
    <option value="5">Выбор пункта 5</option>
    <option value="6" checked>Выбор пункта 6</option>
</select>

<script>
    document.querySelectorAll('.group')[0].addEventListener('click', function (e) {
        var elem = e.target;
        if (elem.hasAttribute('data-select')) {
            let select = document.querySelector('#select');
            select.value = elem.getAttribute('data-select');

            let options = document.querySelectorAll('#select option');
            
            if (select.value == 4) {
                options.forEach(el => el.disabled = false);
            }
            else options.forEach(el => el.disabled = (el.value !== select.value ? true : false));
        }
    });
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 25.11.2018, 18:12
Новичок на форуме
Отправить личное сообщение для olegan4eg88 Посмотреть профиль Найти все сообщения от olegan4eg88
 
Регистрация: 25.11.2018
Сообщений: 9

j0hnik, нет.
В Вашем примере если нажать "Кнопка 2" первой, то не блокирует функции. А если нажать "Кнопка 1" сразу то "Кнопка 2" не работает.
Ответить с цитированием
  #7 (permalink)  
Старый 25.11.2018, 18:14
Новичок на форуме
Отправить личное сообщение для olegan4eg88 Посмотреть профиль Найти все сообщения от olegan4eg88
 
Регистрация: 25.11.2018
Сообщений: 9

MC-XOBAHCK спасибо Вам это верное решение !
Ответить с цитированием
  #8 (permalink)  
Старый 25.11.2018, 18:58
Новичок на форуме
Отправить личное сообщение для olegan4eg88 Посмотреть профиль Найти все сообщения от olegan4eg88
 
Регистрация: 25.11.2018
Сообщений: 9

MC-XOBAHCK, а у можно сделать с использованием строки
Array.from(options, (option, i) => options[i].disabled = (option.value !== select.value ? true : false));
, а дальше добавить проверку, что если select.value === "4" то не блокировать.
Так как у меня за option привязано действие, но в Вашем решении если я нажимаю "Кнопка 1" то в select выбирается нужный option, но применяется он только после следующего действия к в данном случае нажатии "Кнопка 2"

Почему прошу сделать с применением той строки, потмоу что там option выбирается и применяется действие заложенное в нем.
Ответить с цитированием
  #9 (permalink)  
Старый 25.11.2018, 19:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

olegan4eg88,
а так?
<div class="group">
    <label class="primary">
        <input data-select="3" type="button">Кнопка 1</label>
    <label class="primary">
        <input data-select="4" type="button">Кнопка 2</label>
</div>
<select id="select">
    <option value="1">Выбор пункта 1</option>
    <option value="2">Выбор пункта 2</option>
    <option value="3">Выбор пункта 3</option>
    <option value="4">Выбор пункта 4</option>
    <option value="5">Выбор пункта 5</option>
    <option value="6" checked>Выбор пункта 6</option>
</select>

<script>
    document.querySelectorAll('.group')[0].addEventListener('click', function (e) {
        var elem = e.target;
        if (elem.hasAttribute('data-select')) {
            let select = document.querySelector('#select');
            select.value = elem.getAttribute('data-select');

            let options = document.querySelectorAll('#select option');
            
            if (select.value == 4) {
                options.forEach(el => el.disabled = false);
            }
            else options.forEach(el => el.disabled = (el.value !== select.value ? true : false));
        }
      select.dispatchEvent(new Event('change'));
    });
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 25.11.2018, 19:19
Новичок на форуме
Отправить личное сообщение для olegan4eg88 Посмотреть профиль Найти все сообщения от olegan4eg88
 
Регистрация: 25.11.2018
Сообщений: 9

j0hnik вот теперь применяется всё как нужно, спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
select - большое количество option kot_k_k (X)HTML/CSS 3 08.09.2017 16:34
Содержимое option по клику на select wwonder Общие вопросы Javascript 5 18.04.2017 14:12
Значение из select option vnmslf jQuery 19 21.07.2016 12:09
Java Script, совместная работа textarea с select option Алекс_ Элементы интерфейса 1 12.05.2015 08:13
Динамические option в select lurii Элементы интерфейса 10 14.01.2011 11:23