ユーザーが入力する入力フィールドがあり、入力時に各単語の最初の文字を自動的に大文字にしたい。ただし、大文字を手動で削除して小文字に置き換える場合は、そのままにしておきます(基本的に、大文字を使用することをお勧めしますが、必須ではありません)。手動で入力した文字をそのままにして、変更しないようなものを実装するのに問題があります。
これが私が持っているコードとそれへの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を見ると、入力がジャンプして正しく機能しないことがわかります。誰かが私を助けたり、これを行うための最良の方法を推奨したりできますか?ありがとうございました。