2009-07-17 102 views
7

移动Safari支持称为autocapitalize [documented here]上输入元素的属性,其中,当设置为“断开”将停止iPhone大写文本输入到该字段,这是URL或电子邮件字段是有用的。在移动Safari浏览器中可以使用javascript关闭autocapitalize吗?

<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

这是更好的在HTML中指定它受苦,而不是做在Javascript中对没有实际的好处无害的警告。你已经取代了简单,明显和快速的一些东西,即使没有脚本,也可以使用一些不必要的复杂东西。 – 2010-11-29 18:40:42

+2

@Glenn:不完全是无害的警告。你(以及其他维护代码的人)必须记住,这个特定的验证警告并不重要。有点讨厌。 – 2011-03-02 18:45:30

+3

@Paul:验证器的目的是确保您在使用非标准功能时能够意识到,因此您可以做出有教育的决定,而不是在不知情的情况下使用它们。他们不会阻止你使用它们。 – 2011-03-02 19:53:30

回答

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> 
+0

是的,在iPhone 3.0中,此代码效果很好,但相当的jQuery没有,谢谢很多 – 2009-07-18 07:47:01

+0

不要这样做。这是完全没有意义的,只是混淆了页面。 – 2011-03-02 20:17:35

+0

但如何禁用自动更正和快速“。”? – Dmitry 2013-09-18 20:11:00

1

如果它是一个有用的功能,你只需要选择严格的验证和用户体验之间。就我个人而言,我会选择UX。

0

所以我不能让jQuery的做,而是普通的旧的JavaScript,为ddkilzer建议的作品,所以我放在一起这个功能应用autocapitalize =“关闭”选项,所有的输入与特定等级:

$(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'); 
    } 
} 
8

附注。您甚至可以通过指定输入类型为“电子邮件”以自动调出“电子邮件”键盘(输入电子邮件时略好的字符)来改善iOS上的用户体验。

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

Here is some documentation关于输入类型如何控制iOS键盘。

3

,如果你通过脚本添加,或如果在标记添加它,它只是为无效。只是验证器无法通过脚本添加它才能注意到它。

只要把它放在标记中,并在旁边放置注释,就像<!-- the "autocapitalize" attribute is an Apple proprietary extension for the iPhone to change its IME behaviour -->那样,看看验证器中代码的人就会知道发生了什么。