Имеется такой выпадающий список с автокомплитом:
$('.js-input-with-tips').on('focus', function (event) {
var $current_search_field = $(this),
$target_tips_block = $current_search_field.data('dropdown-block'),
$hidden_field = $current_search_field.next('input'), // Поле в которое записываем ID выбранного места
$dropdown_block = $('#' + $target_tips_block);
$current_search_field.on('keyup', function () {
$current_search_field.parent('.form__input-wrap').attr('data-aeroport-code', '');
if ($current_search_field.val().length >= 3) {
$dropdown_block.one('click', '.dropdown-menu li', function () {
var $selected_item = $(this),
selected_code = $.trim($selected_item.find('.dropdown-menu__code').text()),
selected_place = $.trim($selected_item.find('.dropdown-menu__place').text()),
selected_name = selected_code.length != 0 ? selected_place : $.trim($(this).text()),
selected_id = $(this).data('place-id');
$current_search_field
.val(selected_name)
.parent('.form__input-wrap')
.attr('data-aeroport-code', selected_code);
$hidden_field.val(selected_id);
$dropdown_block.off('click', '.dropdown-menu li');
$dropdown_block.removeClass('open');
});
$dropdown_block.addClass('open');
} else {
$dropdown_block.off('click', '.dropdown-menu li');
$dropdown_block.removeClass('open');
$hidden_field.val('');
}
});
$(document).on('click', function (e) {
if (!$dropdown_block.is(e.target)
&& $dropdown_block.has(e.target).length === 0) {
$dropdown_block.removeClass('open');
$(document).off('click', '.dropdown-menu li');
}
});
});
Все работает, но на iOS приходится тапать по выбранному элементу 2 раза. Пробовал убирать ховер, изменял событие (......on("click touchend", function(e)......). Дать ссылку на живой пример нет возможности.