我有一个用户将填写的输入字段,我想在他们输入时自动将每个单词的第一个字母大写。但是,如果他们手动删除大写字母并将其替换为小写字母,我希望保留它(基本上大写字母是我们建议的,但不是必需的)。我在实现某些东西时遇到了麻烦,这些东西会使他们单独手动键入的字母而不是更改它们。
这是我拥有的代码以及指向它的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 中看到输入跳动并且无法正常工作。谁能帮助我或推荐一个最好的方法来做到这一点?谢谢你。