В прошлую пятницу я нашел аналогичный вопрос по этой проблеме, но, похоже, не нашел его снова. Если кто-то может совать меня в правильном направлении, это будет здорово.
По сути, у меня есть несколько меню выбора на странице. Первое заполняется при загрузке, второе заполняется при выборе первого. Достаточно просто.
Однако, на устройствах iOS, когда вы нажимаете на элемент select, он запускает скроллер iOS для вас, чтобы сделать выбор. Если кто-то использует собственные кнопки iOS previous
или next
, следующий вход <select>
не будет собирать предыдущие данные выбора. Вы должны физически нажать done
, а затем запустить следующее меню выбора, чтобы заполненные результаты были точными.
Существует веб-сайт под названием http://m.lemonfree.com, который заставляет вас коснуться done
, а не prev/next
, а также не позволяет вам нажимать выключения меню выбора iOS, чтобы закрыть приглашение выбора. По сути, заставить пользователя выбрать done
.
Мне было бы очень интересно узнать, как они достигли этой функциональности.
Ура!
Здесь мой код на всякий случай:
<form method="post" action="list.php" class="striped-bg-inverted">
<p>
<label for="make">Make</label>
<select name="make" id="make" required="required">
<option selected>Select a Make</option>
<?php foreach ($usedMakes->MakeResult as $MakeResult) { ?>
<option value="<?php echo $MakeResult->makeId; ?>"><?php echo $MakeResult->makeName; ?></option>
<?php } ?>
</select>
</p>
<p>
<label for="model">Model</label>
<select name="model" id="model" required="required">
<option value="" selected>Select a Model</option>
</select>
</p>
<p>
<button name="submit" id="submit"> Submit </button>
</p>
</form>
Мой JavaScript:
$("#make").change(function() {
var makeId = $(this).val();
$.ajax({
url: "process.inc.php?makeId=" + makeId,
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var list = "";
for (i = 0 ; i < data.length; i++) {
var modelId = data[i].ModelResult.modelId;
var modelName = data[i].ModelResult.modelName;
list += "<option value=\"" + modelId + "\">" + modelName + "</option>";
};
var theSelect = $("#model");
theSelect.find("option:gt(0)").remove();
theSelect.append(list);
}
});
});