【发布时间】:2012-10-08 00:19:02
【问题描述】:
上周五我发现了一个关于此问题的类似问题,但似乎无法再次找到它。如果有人能把我引向正确的方向,那就太好了。
基本上我在一个页面上有多个选择菜单。第一个填充加载,第二个填充确定第一个的选择。很简单。
但是,在 iOS 设备中,当您点击选择元素时,它会启动 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);
}
});
});
【问题讨论】:
-
仍然不是我之前发现的解决方案,一堆
disabled和只读解决方案根本不适用。感谢您提供更多链接。 -
我也很想知道他们是如何做到的 :(
-
你找到解决办法了吗?
-
这有点 hacky,但这在 iOS 7 中对我有用:stackoverflow.com/a/18273356/400728
标签: html ios select input mobile-safari