7

移动 safari 支持输入元素上的一个名为autocapitalize [记录在这里] 的属性,当设置为“关闭”时,将停止 iPhone 将文本输入大写到该字段中,这对于 url 或电子邮件字段很有用。

<input type="text" class="email" autocapitalize="off" />

但是此属性在 html 5(或据我所知的其他规范)中无效,因此将其包含在 html 中会产生无效的 html 页面,我想做的是能够将此属性添加到特定字段 onload 与像这样的javascript:

$(document).ready(function(){
  jQuery('input.email, input.url').attr('autocapitalize', 'off');
});

它在 Firefox 和桌面 safari 中添加了正确的属性,但在移动 safari 中似乎没有做任何事情,为什么?

4

5 回答 5

8

这应该在 iPhone OS 3.0 中修复。您正在尝试使用哪个版本的 iPhone OS?

Email: <input id="email" type="text"><br>
URL: <input id="url" type="text"><br>
<script>
//document.getElementById("email").autocapitalize = 'off';
//document.getElementById("url").autocapitalize = 'on';
document.getElementById("email").setAttribute('autocapitalize', 'off');
document.getElementById("url").setAttribute('autocapitalize', 'on');
alert(document.body.innerHTML);
</script>
于 2009-07-18T00:41:42.547 回答
8

边注。您可以通过将输入类型指定为“电子邮件”以自动调出“电子邮件”键盘(用于键入电子邮件的字符稍好),从而进一步改善 iOS 上的用户体验。

<input type="email" class="email" autocapitalize="off" />

这是一些关于输入类型如何控制 iOS 键盘的文档。

于 2010-10-15T03:00:53.377 回答
4

如果您通过脚本添加它或将它添加到标记中,它同样无效。只是如果您通过脚本添加它,验证器将无法注意到它。

只需将其放在标记中并在其旁边添加注释,例如<!-- the "autocapitalize" attribute is an Apple proprietary extension for the iPhone to change its IME behaviour -->,这样查看验证器中代码的人就会知道发生了什么。

于 2011-03-02T20:01:36.040 回答
1

如果它是一个有用的功能,您只需要在严格验证和用户体验之间做出选择。就个人而言,我会选择任何一天的用户体验。

于 2009-07-18T09:57:59.453 回答
0

所以我不能让 jQuery 来做它,但是普通的旧 javascript,正如 ddkilzer 建议的那样,所以我把这个函数放在一起,将 autocapitalize='off' 选项应用于具有特定类的所有输入:

$(document).ready(function(){
  // disable autocapitalize on .url, .email fields
  unautocapitalize('url');
  unautocapitalize('email');
});

function unautocapitalize(cssClass){
  var elems = document.getElementsByClassName(cssClass);
  for (var j = 0; j < elems.length; j++){
    elems[j].setAttribute('autocapitalize', 'off');
  }
}
于 2009-07-19T00:24:00.843 回答