Показать сообщение отдельно
  #6 (permalink)  
Старый 16.11.2021, 17:47
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Какой то натянутый интерфейс.
Если вам нужен только тогда, когда 1, то зачем кликать? Это лишнее действие. Просто при поиске проверяйте количество найденных и берите его, если остался только один. Да и зачем тогда селект. Просто в списке искать и показывать, когда один остался.
А почему только один?
Допустим осталось в селекте 3 или 5 или 10, и человек видит то, что ему нужно, почему он не может кликнуть по нужному и не вводить дальше.

В любом случае событие 'click' даст нужный элемент

<body>
<input autofocus type="text" id="select_filter" placeholder="Введи текст для поиска" />
                         <select name="select" id="select_region" class="geo_select">
                              <option value="" hidden>Оберіть регіон</option>
                              <option value="1" >Харьков</option>
                              <option value="2" >Хмельницк</option>
                              <option value="3" >Хмарцизк</option>
                         </select>
<script>
const regionSelect = document.getElementById('select_region');
const regionFilter = document.getElementById('select_filter');

    const optionsArray = [...regionSelect.options];
    
    regionFilter.oninput = function(e) {
        const val = this.value.trim();
        const regexp = new RegExp(val, "ig");
        regionSelect.options.length = 0;
        optionsArray.forEach(elem =>{
            if (elem.innerText.search(regexp) !== -1){
                regionSelect.appendChild(elem);
 
            }
        })
    };
    regionSelect.addEventListener('click', () => {
		console.log (regionSelect.options[regionSelect.selectedIndex].value)
    })

</script>
</body>
Ответить с цитированием