Mobile safari支持名为autocapitalize的输入元素的属性 [documented here],设置为“关闭”时会停止iPhone将文本输入大写到该字段中,这对于网址或电子邮件字段非常有用。
<input type="text" class="email" autocapitalize="off" />
但是这个属性在html 5(或者据我所知的其他规范)中无效,所以将它包含在html中会产生一个无效的html页面,我想做的是能够将这个属性添加到特定的字段onload with javascript with this:
$(document).ready(function(){
jQuery('input.email, input.url').attr('autocapitalize', 'off');
});
在firefox和桌面游戏中添加了正确的属性,但似乎没有在移动游猎中做任何事情,任何想法为什么?
答案 0 :(得分: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>
答案 1 :(得分:8)
旁注。您可以通过将输入的类型指定为“电子邮件”来自动调出“电子邮件”键盘(用于键入电子邮件的字符稍微好一点),从而进一步改善iOS上的用户体验。
<input type="email" class="email" autocapitalize="off" />
Here is some documentation关于输入类型如何控制iOS键盘。
答案 2 :(得分:4)
如果您通过脚本添加它或者将其添加到标记中,它同样无效。只是如果你通过脚本添加它,验证器就无法注意到它。
只需将其放入标记并在其旁边添加注释,如<!-- the "autocapitalize" attribute is an Apple proprietary extension for the iPhone to change its IME behaviour -->
,那样查看验证器中代码的人就会知道是什么了。
答案 3 :(得分:1)
如果它是一个有用的功能,您只需要在严格验证和用户体验之间进行选择。就个人而言,我会在任何一天选择用户体验。
答案 4 :(得分: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');
}
}