Почему Select2 не работает хорошо на устройстве iOS?
Я использую библиотеку select2
из шаблона администратора пикселей. Я заметил, что он хорошо работает на настольных и Android устройства. Тем не менее, раскрывающийся список не открывается при просмотре на устройстве iOS. Я не знал почему.
$(document).ready(function() {
var init = [];
init.push(function() {
var $select2 = $("#Salutation,#Gender").select2();
$select2.on('select2:select select2:unselect', () => {
$(":focus").blur();
});
})
window.PixelAdmin.start(init);
});
body .select2-container.select2-container--default.select2-container--open {
top: 305px!important;
left: 22px!important;
}
.select2.select2-container.select2-container--default.select2-container--below.select2-container--open {
top: auto!important;
}
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Select2</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="pixel-admin.min.js"></script>
<link rel="stylesheet" href="pixel-admin.min.css">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.js"></script>
<div class="container">
<div class="row">
<div class="col-xs-4 col-xs-offset-4">
<h3>Application Form</h3>
<form class="form" action="/action_page.php">
<div class="form-group">
<label for="GivenName">Given Name:</label>
<input class="form-control" type="text" id="GivenName">
</div>
<div class="form-group">
<label for="Surname">Surname:</label>
<input class="form-control" type="text" id="Surname">
</div>
<div class="form-group">
<label for="Salutation">Salutation:</label>
<select class="form-control" name="" id="Salutation">
<option value="Mrs">Mrs</option>
<option value="Mr">Mr</option>
<option value="Miss">Miss</option>
</select>
</div>
<div class="form-group">
<label for="Gender">Gender:</label>
<select class="form-control" name="" id="Gender">
<option value="Female">Female</option>
<option value="Male">Male</option>
<option value="Transgender">Transgender</option>
</select>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
</div>
Я включил pixel-admin js для вас здесь.
Примечание он работает, когда я использую функцию рабочего стола запроса на устройстве iOS.
какие будут предложения? Пожалуйста пожалуйста, помогите мне. Спасибо
2 ответов
Я сделал 2 страницы для вас первый содержит выпадающее меню, которое останется тем же видом , той же функциональностью над мобильными и настольными браузерами . пожалуйста, откройте его через мобильные браузеры ,
нажмите здесь, чтобы просмотреть его ...
на вторая страница, я скорректировал код, и выпадающий список теперь должен работать вместе с библиотеками pixel & select2, сохраняя тот же вид, что и на мобильном / рабочем столе браузер ,
вы сможете использовать их на мобильный браузер двойным щелчком мыши в каждом выпадающем меню, чтобы открыть его и выбрать значение , я оставил его для вас, так что вы можете изменить его на основе события onclick он будет скрывать меню при выборе для настольных или мобильных браузеров.
// show/hide the menu when examples is clicked
$(".dropdown-toggle").on("click", function () {
$(".dropdown-menu").toggle();
});
// судоходства
$("#nav").on("click", "li", function () {
$("#menu-icon").click();
document.getElementById("flag").focus();
//$("#nav").slideToggle();
});
и для мобильных браузерах, вы можете использовать НИЖЕ, чтобы скрыть меню
$(документ).на('нажмите touchstart', function () {}
пожалуйста, проверьте ссылки и найти использованные ресурсы/файлы
нажмите здесь, чтобы просмотреть его ...
оставшаяся работа должна быть CSS и код стиля, вы можете управлять этим, как вам нравится, как я вижу, бессмысленно настраивать поля, не принимая ваши взгляды на него .
Что касается объяснения того, как я мог бы достичь этой задачи, на самом деле мне пришлось ограничить способ загрузки java-скрипта, кроме того, я отредактировал почти все библиотеки js и загружать их через скрипты J. S во время резервного копирования J-запроса .
вот шаги для достижения этого:
первый :
загрузить библиотеку jquery через резервный
второй :
загрузить admin-pixel.Яш загрузить пиксель.в CSS
Шаг Третий :
загрузить select2.Яш нагрузка select2.в CSS
они должны быть загружены последовательно и наконец, после загрузки вышеуказанного вы должны написать этот код, чтобы выпадающее меню не менялось в мобильном браузере, и оно останется таким же функциональным, как и настольные браузеры, поместите их на тег скрипта после загрузки J-запроса, а затем загрузите библиотеку select 2
$('select').select2({
minimumResultsForSearch: -1
});
заключительные шаги :
вы должны написать эти мета-теги и css на своей html-странице
<meta HTTP-EQUIV="MSThemeCompatible" content="Yes" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta id="viewport" name="viewport" content="width=device-width,initial-
scale=1.0,user-scalable=no">
CSS код поместите его на "" теги:
html {
touch-action: manipulation;
}
As по вашему запросу задача выполнена, и вы можете пройти код по всем файлы, чтобы увидеть, как библиотеки js загружаются последовательно, вы можете загрузить все ресурсы вместе с html-страницей
альтернативное решение для вас , вдали от ваших библиотек, вы можете создать выпадающий список полей, которые они не имеют проблемы функционирования на мобильном браузере, а затем использовать их на странице, которые имеют проблемы , и при выборе пользователя на этих рабочих выпадающие списки полей, trans-fare / переместить значение в сломанный принадлежит select2 (сделать это через java-скрипт и скрыть сломанное выпадающее меню с отображением: нет;
это может показаться глупым, но это намного быстрее, чем пройти через все эти ошибки, с которыми вы можете столкнуться во время разработки для амортизированной библиотеки, которую вы используете ....
дайте мне знать, если есть какие-либо проблемы, так как я не могу выполнить проверку на вашем рабочем сервере. я будет редактировать мой ответ в конечном итоге для корректировки моего ответа .
удачи
не уверен, что вы пытаетесь достичь, но если вы хотите нажать свои вызовы в массив, вы можете сделать это, как показано ниже:
var init = [];
init.push(
$("#Salutation,#Gender").select2().on('select2:select select2:unselect', function () {
$(":focus").blur();
})
);
или вы можете использовать IIFE, как показано ниже:
var init = [];
init.push(function () {
var $select2 = $("#Salutation,#Gender").select2();
$select2.on('select2:select select2:unselect', () => {
$(":focus").blur();
});
}());