3

ユーザーが入力する入力フィールドがあり、入力時に各単語の最初の文字を自動的に大文字にしたい。ただし、大文字を手動で削除して小文字に置き換える場合は、そのままにしておきます(基本的に、大文字を使用することをお勧めしますが、必須ではありません)。手動で入力した文字をそのままにして、変更しないようなものを実装するのに問題があります。

これが私が持っているコードとそれへのJsfiddleリンクです。

<input class="capitalize" />

およびJS:

lastClick = 0;

$(document).ready(function() {
$(".capitalize").keyup(function() {
            var key = event.keyCode || event.charCode;
        if (!(lastClick == 8 || lastClick == 46)) {
                //checks if last click was delete or backspace
            str = $(this).val();  
                        //Replace first letter of each word with upper-case version.
            $(this).val(str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}));               
        }
        lastClick = key;
    });
});

ユーザーの手動による修正を保持することは許可していませんが、jsfiddleを見ると、入力がジャンプして正しく機能しないことがわかります。誰かが私を助けたり、これを行うための最良の方法を推奨したりできますか?ありがとうございました。

4

2 に答える 2