3

名前入力ボックスがあります。ユーザーが入力するときに名前の最初の文字を自動大文字にしたいのですが、ユーザーが「deSalis」などの名前の変更をオーバーライドできるようにします。

ここでは、CSSではこれが不可能であることがわかります。これは、text-transform:capitalize;すべての単語を大文字にし、オーバーライドできないためです。

ハンドラーは入力時に最初の文字を修正できます。これを行うため.keyupの解決策がたくさんあります

元の大文字と小文字を簡単に上書きする方法がわかりません。フラグが必要だと思いますが、関数が複数の要素にアタッチできる関数である場合、フラグはどこに配置する必要がありますか?DOM要素をフラグとして追加することもできますが、これはかなり醜いようです。

非オーバーライドモデルのフィドルはここにあります

提案?

4

1 に答える 1

3

入力ボックスに最初の大文字keyCodeのみを表示させるには、常に大文字の形式であるため、直接使用できます。

regexそれだけで、高価な方法や使用する方法の要件が緩和され.replace()ます。

jQuery:

$('.auto').one('keyup', function(e) {
    $(this).val(String.fromCharCode(e.keyCode));
});

参照: jsFiddle


次の回答は、Tab Key要件を含むように改訂され、入力ボックスの内側をクリックしてコンテキストメニューから貼り付け、キーボード貼り付け方法(Ctrl + V)を使用して、直接入力します。それは性格を排除するkeyCodesので、国際的な支持が認められます。jQueryセレクターはここで取得されました。

再改訂: jsFiddle送信時に大文字を強制しません。

于 2012-07-26T08:58:05.633 に答える