Затея такая: При клике на поле "Выберите город" выпадает меню, при двойном клике закрывается, при клике вне дива закрывается: В этом меню сразу идет поиск по городам которые будут ниже, потом идет список городов. Список с городами листается вниз ( справа ползунок прокрутки) Когда делается выбор города он вставляется в поле "Выберите город".
Вот html:
<div class="b-order-prepare__field" data-qaid="city-dd">
<div class="js-toggle x-drop-down x-drop-down_state_active" data-qaid="dd_widget"><span class="x-drop-down__value b-order-prepare__field">Выберите город</span><span class="x-drop-down__arrow"></span><input type="hidden" value="8e1718f5-1972-11e5-add9-005056887b8d">
<div class="x-drop-down__dropped">
<div class="x-drop-down__search">
<div class="x-input x-input_size_s"><input type="text" class="x-input__field" autocomplete="off" value=""></div>
</div>
<ul class="x-drop-down__list js-dropdown" style="max-height: 300px;">
<li class="js-item b-drop-down__list-item b-drop-down__list-item_state_hover">Авангард</li>
<li class="js-item b-drop-down__list-item">Авдеевка</li>
<li class="js-item b-drop-down__list-item">Авиаторское</li>
<li class="js-item b-drop-down__list-item">Агрономичное</li>
<li class="js-item b-drop-down__list-item">Аджамка</li>
<li class="js-item b-drop-down__list-item">Ананьев</li>
<li class="js-item b-drop-down__list-item">Андреевка (Балаклейский р-н)</li>
<li class="js-item b-drop-down__list-item">Андреевка (Бердянский р-н)</li>
<li class="js-item b-drop-down__list-item">Андрушевка</li>
<li class="js-item b-drop-down__list-item">Антоновка (Скадовский р-н)</li>
<li class="js-item b-drop-down__list-item">Антонины</li>
<li class="js-item b-drop-down__list-item">Апостолово</li>
<li class="js-item b-drop-down__list-item">Арбузинка</li>
<li class="js-item b-drop-down__list-item">Арциз</li>
<li class="js-item b-drop-down__list-item">Аскания-Нова</li>
<li class="js-item b-drop-down__list-item">Аулы</li>
<li class="js-item b-drop-down__list-item">Бабаи</li>
<li class="js-item b-drop-down__list-item">Бабанка</li>
<li class="js-item b-drop-down__list-item">Балабино</li>
<li class="js-item b-drop-down__list-item">Балаклея (Черкасская обл.)</li>
<li class="js-item b-drop-down__list-item">Балаклея (Харьковская обл.)</li>
<li class="js-item b-drop-down__list-item">Балки (Запорожская обл.)</li>
<li class="js-item b-drop-down__list-item">Балта</li>
<li class="js-item b-drop-down__list-item">Банилов</li>
<li class="js-item b-drop-down__list-item">Бар</li>
<li class="js-item b-drop-down__list-item">Баранинцы (Закарпатская обл.)</li>
<li class="js-item b-drop-down__list-item">Барановка</li>
<li class="js-item b-drop-down__list-item">Барвенково</li>
<li class="js-item b-drop-down__list-item">Барышевка</li>
<li class="js-item b-drop-down__list-item">Бахмач</li>
<li class="js-item b-drop-down__list-item">Бахмут</li>
<li class="js-item b-drop-down__list-item">Баштанка</li>
<li class="js-item b-drop-down__list-item">Безлюдовка</li>
<li class="js-item b-drop-down__list-item">Бердичев</li>
<li class="js-item b-drop-down__list-item">Бердянск</li>
<li class="js-item b-drop-down__list-item">Берегово</li>
<li class="js-item b-drop-down__list-item">Берегомет</li>
</ul>
</div>
</div><noscript></noscript></div>
$(".x-drop-down__value").click(function(event) {
toggleMenu();
event.stopPropagation();
});
$('.b-drop-down__list-item').click(function() {
$('.x-drop-down__value').html($(this).text());
toggleMenu();
});
function toggleMenu() {
let menu = $(".x-drop-down__dropped");
if (!menu.hasClass('active')) {
window.addEventListener('click', closeMenu);
} else {
window.removeEventListener('click', closeMenu);
}
menu.toggleClass("active");
}
function closeMenu() {
$(".x-drop-down__dropped").removeClass("active")
}
$('.x-drop-down__dropped').click(function(event) {
event.stopPropagation();
});
$('.x-input__field').on('input', function() {
let search = $(this).val();
searchData(search);
});
function searchData(search) {
let towns = $('.b-drop-down__list-item');
towns.each(function() {
if ($(this).text().indexOf(search) === -1) {
$(this).addClass('item_hide');
} else {
$(this).removeClass('item_hide');
}
});
}
.js-dropdown {
display: inline-block;
max-height: 400px;
overflow-y: auto;
width: auto;
}
.x-drop-down__dropped {
display: none;
}
.x-drop-down__dropped.active {
display: block;
}
.item_hide {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="b-order-prepare__field" data-qaid="city-dd">
<div class="js-toggle x-drop-down" data-qaid="dd_widget"><span class="x-drop-down__value b-order-prepare__field">Выберите город</span><span class="x-drop-down__arrow"></span><input type="hidden" value="8e1718f5-1972-11e5-add9-005056887b8d">
<div class="x-drop-down__dropped">
<div class="x-drop-down__search">
<div class="x-input x-input_size_s"><input type="text" class="x-input__field" autocomplete="off" value=""></div>
</div>
<ul class="x-drop-down__list js-dropdown" style="max-height: 300px;">
<li class="js-item b-drop-down__list-item b-drop-down__list-item_state_hover">Авангард</li>
<li class="js-item b-drop-down__list-item">Авдеевка</li>
<li class="js-item b-drop-down__list-item">Авиаторское</li>
<li class="js-item b-drop-down__list-item">Агрономичное</li>
<li class="js-item b-drop-down__list-item">Аджамка</li>
<li class="js-item b-drop-down__list-item">Ананьев</li>
<li class="js-item b-drop-down__list-item">Андреевка (Балаклейский р-н)</li>
<li class="js-item b-drop-down__list-item">Андреевка (Бердянский р-н)</li>
<li class="js-item b-drop-down__list-item">Андрушевка</li>
<li class="js-item b-drop-down__list-item">Антоновка (Скадовский р-н)</li>
<li class="js-item b-drop-down__list-item">Антонины</li>
<li class="js-item b-drop-down__list-item">Апостолово</li>
<li class="js-item b-drop-down__list-item">Арбузинка</li>
<li class="js-item b-drop-down__list-item">Арциз</li>
<li class="js-item b-drop-down__list-item">Аскания-Нова</li>
<li class="js-item b-drop-down__list-item">Аулы</li>
<li class="js-item b-drop-down__list-item">Бабаи</li>
<li class="js-item b-drop-down__list-item">Бабанка</li>
<li class="js-item b-drop-down__list-item">Балабино</li>
<li class="js-item b-drop-down__list-item">Балаклея (Черкасская обл.)</li>
<li class="js-item b-drop-down__list-item">Балаклея (Харьковская обл.)</li>
<li class="js-item b-drop-down__list-item">Балки (Запорожская обл.)</li>
<li class="js-item b-drop-down__list-item">Балта</li>
<li class="js-item b-drop-down__list-item">Банилов</li>
<li class="js-item b-drop-down__list-item">Бар</li>
<li class="js-item b-drop-down__list-item">Баранинцы (Закарпатская обл.)</li>
<li class="js-item b-drop-down__list-item">Барановка</li>
<li class="js-item b-drop-down__list-item">Барвенково</li>
<li class="js-item b-drop-down__list-item">Барышевка</li>
<li class="js-item b-drop-down__list-item">Бахмач</li>
<li class="js-item b-drop-down__list-item">Бахмут</li>
<li class="js-item b-drop-down__list-item">Баштанка</li>
<li class="js-item b-drop-down__list-item">Безлюдовка</li>
<li class="js-item b-drop-down__list-item">Бердичев</li>
<li class="js-item b-drop-down__list-item">Бердянск</li>
<li class="js-item b-drop-down__list-item">Берегово</li>
<li class="js-item b-drop-down__list-item">Берегомет</li>
</ul>
</div>
</div><noscript></noscript></div>
чем обычный инпут с даталистом не угодил?
<input list="%идентификатор%">
<datalist id="%идентификатор%">
<option value="Город1">
<option value="Город2">
</datalist>
Обстилить его чтобы на <select>
похоже было, и всего делов.
И, да, двойной щелчок на веб-сайте - мракобесие.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Я хотел бы додать class только для одного (create-new-label-main-container div) с backgrond-color 'ColorOfLabel', не для всех, но проблема в том, что $(this) в этом коде это кликнутый('
Как переписать скрипт, чтобы вкладки работели с тегом select? Те
Как сделать, чтоб при вводе в это поле русских символов проходила транслитерация, и пробелы менялись символом "-"?
Здравствуйте уважаемые знатоки, вопрос такой: Мне на сайте WP в sidebar нужно вывести 2 виджета, для этого я использую разные файлы JS в которых...