2009-07-17 10 views
7

モバイルsafariは、autocapitalize [documented here]と呼ばれる入力要素の属性をサポートしています。これを 'オフ'に設定すると、テキスト入力は大文字になります。これは、urlフィールドまたはemailフィールドに便利です。したがって、無効なHTMLページを生成しますHTMLでそれを含め モバイルサファリでjavascriptを使用して自動化をオフにすることはできますか?

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

しかし、この属性はHTML 5では有効ではありません(または私の知る限りでは、他の仕様)は、私がやりたいものを追加することができています任意のアイデアなぜ、FirefoxとSafariでデスクトップ正しい属性が追加されますが、モバイルサファリでは何もしていないようだ

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

:特定のフィールドに、この属性は、このような何かをJavaScriptでonloadイベント?

+4

これはHTMLで指定する方がはるかに優れており、実際のメリットがないようにJavascriptで行うよりも無害な警告が表示されます。シンプルで明白で高速なものを置き換えました。これは、スクリプティングなしでもうまく動作しません。 –

+2

@Glenn:まったく無害な警告ではありません。あなた(およびコードを管理している他の人)は、この特定の検証警告が問題ではないことを覚えていなければなりません。一種の迷惑です。 –

+3

@Paul:バリデータの目的は、非標準機能を使用しているときに気づいていることを確認することです。無意識に使用するのではなく、意思決定を下すことができます。あなたがそれらを使うのを妨げることはありません。 –

答えて

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はありませんたくさん –

+0

これをしないでください。完全に無意味で、ページを難読化するだけです。 –

+0

しかし、自動補正と高速 "。"を無効にする方法はありますか? – Dmitry

1

有用な機能の場合は、厳密な検証とユーザーエクスペリエンスの間で選択する必要があります。個人的には、いつでもUXを選んでいます。

0

だから私はddkilzerが作品を示唆したように、jQueryのは、それが、昔ながらのjavascriptを実行するために得ることができなかったので、私は特定のクラスで、すべての入力にオプション「オフ」= 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 -->のようにコメントを追加すると、バリデーターのコードを見ている人は何が起きているのか分かります。

関連する問題