У меня возникла проблема с попыткой перенаправить на другую страницу, когда пользователь выбирает параметр в меню <select>
в jQuery Mobile .
Ниже приведен очень небольшой пример, похожий на то, что я пытаюсь сделать, который демонстрирует проблему, с которой я столкнулся. Проблема в том, что когда список опций слишком велик и не помещается на экране, перенаправление не работает. Он отлично работает, когда параметры умещаются на экране. (Вы можете воспроизвести это в настольном браузере, сделав окно очень маленьким.)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery Mobile Test</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css">
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<script>
$(function () {
$('#mySelect').bind('change', function () {
// The actual logic for building the URL is more complicated, obviously.
// This is just an example.
var url = 'jquery-mobile-test.html?param=' + this.value;
location.href = url;
});
});
</script>
</head>
<body>
<div data-role="page" class="type-home">
<div data-role="content">
<div data-role="fieldcontain">
<select data-native-menu="false" name="param" id="mySelect">
<option>Select an Option...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
<option value="6">Six</option>
<option value="7">Seven</option>
<option value="8">Eight</option>
<option value="9">Nine</option>
<option value="10">Ten</option>
</select>
</div>
</div>
</div>
</body>
</html>
Немного истории из документов jQuery Mobile:
Когда
select
имеет небольшое количество опций, которые поместятся на экране устройства, меню будет отображаться в виде небольшого наложения с всплывающим переходом. [...] Когда на экране устройства отображается слишком много параметров, платформа автоматически создает новую «страницу», заполненную стандартным представление списка для параметров. Это позволяет нам использовать встроенную прокрутку устройства для перемещения по длинному списку. Текст внутри этикетки используется в качестве заголовка для этой страницы.
Когда он создает новую «страницу», он добавляет #&ui-state=dialog
в конец URL-адреса, а затем при выборе параметра изменяет URL-адрес обратно. Я думаю, что это мешает перенаправлению, которое я пытаюсь сделать.
Любые предложения о том, как лучше всего это исправить?
Правка №1: я должен был упомянуть, что я не могу использовать $.mobile.changePage()
, потому что страница, на которую я перенаправляюсь, сама делает какое-то странное перенаправление, которое искажает переходы. Мне жаль, что это не было представлено в примере.
Правка №2: я вставил свой код выше (вместо того, чтобы использовать суть), чтобы людям было легче найти этот вопрос с помощью поиска.