【问题标题】:iOS Safari Mobile disable previous & next for select inputiOS Safari Mobile 禁用选择输入的上一个和下一个
【发布时间】:2012-10-08 00:19:02
【问题描述】:

上周五我发现了一个关于此问题的类似问题,但似乎无法再次找到它。如果有人能把我引向正确的方向,那就太好了。

基本上我在一个页面上有多个选择菜单。第一个填充加载,第二个填充确定第一个的选择。很简单。

但是,在 iOS 设备中,当您点击选择元素时,它会启动 iOS 滚动条供您进行选择。如果有人使用原生 iOS 的previousnext 按钮,下面的<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">&nbsp;Submit&nbsp;</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);
    }
  });
});

【问题讨论】:

标签: html ios select input mobile-safari


【解决方案1】:

使用htmltabindex="nubmer"属性(http://www.w3schools.com/tags/att_global_tabindex.asp)

要防止下一个/上一个输入或选择使用tabindex="-1"

<input tabindex="-1" />

UPD:我检查了http://m.lemonfree.com/ 脚本,并没有发现这个表单有什么神奇之处,请参见下面的代码,这就是他们所拥有的(所以尝试使用tabindex):

$('#PostCode_text').click(function() {
    $('#PostCode_text').val('');
});

var searchForm = new LemonFree_SearchForm();

$('#Make_select').change(function() {
    searchForm.loadVastModels(this.value, '#Model_select');
});


$('#Search_form').submit(function() {
    if (Validate.isZipCode($('#PostCode_text').val())) {
        return true;
    } else {
        alert('Please enter a 5 digit zip code');
        return false;
    }
});

【讨论】:

  • 很棒的提示!我不再做任何以 iPhone 为中心的移动开发,所以我无法测试你的建议。希望有人可以确认,以便我可以将您的答案标记为(唯一)接受的答案。
  • 这个解决方案对我不起作用。请参阅我的答案以获得有效的解决方案。
  • 对我不起作用 - 想知道它是否与 iOS 版本有关。我目前使用的是 iOS 9.3.2。任何适用于现代手机的更新解决方案?
  • @am5255 当然,差不多是 4 年前的事了。不知道新的 iOS
【解决方案2】:

我制作了一个模块来解决这个特殊问题。 Here is the GitHub repo,下面是它的动图。

【讨论】:

  • 干得好!这是一个老问题,但我相信很多人都可以从你的插件中受益。感谢您的贡献!
  • 这里有个问题,当form2是一个select标签,我滚动选项后,prev & next又可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多