iOS 8,9中移动Safari上的autocapitalize =“words” - 是否有解决方法?

时间:2015-09-18 15:17:11

标签: ios8 ios9 mobile-safari

使用默认的iOS键盘,在iOS 8,9下的移动版Safari中,<input>属性autocapitalize="words"已被破坏。它将字段的前两个字母加上大写,而不是每个单词的第一个字母。

支持官方文档:https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/Attributes.html

要测试,请在iOS模拟器或真实设备上打开以下字段:

First name: <input type="text" autocorrect="off" autocapitalize="words" value="First Name">

您可以使用https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_form_submit进行测试,也可以使用iOS 8或9上的此代码段

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Test autocapitalize</title>
   </head>
  <body>
    <form>
      <label for="words">autocapitalize="words"</label>
      <input type="text" autocapitalize="words" name="text1" id="words" /><br />
      <label for="sentences">autocapitalize="sentences"</label>
      <input type="text" autocapitalize="sentences" name="text2" id="sentences" /><br />
      <label for="none">autocapitalize="none"</label>
      <input type="text" autocapitalize="none" name="text3" id="none" />
    </form>
  </body>
</html>

我很惊讶自8.x以来一直存在并且已经在雷达之下。

是否有已知的解决方法?

更新10/13: iPhone 6s + Safari完全忽略输入字段上设置的任何HTML属性。

1 个答案:

答案 0 :(得分:1)

如果您愿意(暂时)包含此库,似乎有一个解决方法:https://github.com/agrublev/autocapitalize。但它确实需要jQuery,因此在移动设备上可能不太理想。我已经创建了这一小段代码,它在不使用jQuery的情况下执行相同的操作仅用于单词。它可以延伸到包括其他案例。

下面的示例还会在页面就绪时首先将单词大写,而不仅仅是在&#39; keyup&#39;事件。我已经在多个设备上测试了代码并且没有出现错误。但是如果某些事情不起作用或者你觉得可以做得更好的事情,请随时评论。

请注意&#39; domReady&#39;功能我为IE9及以上添加了作品。如果您需要旧版本的支持,请参阅this

FOREIGN KEY