我有一个输入字段供用户填写,我想在输入单词时自动将每个单词的首字母大写。但是,如果他们手动删除一个大写字母并将其替换为小写字母,我希望保留它(基本上建议使用大写字母,但这不是必需的)。我在实现某些东西时会遇到麻烦,这些问题会使他们手动输入的字母独自留下而无法更改。
这是我的代码以及Jsfiddle link的代码。
<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中看到输入跳来跳去并且无法正常工作。谁能帮我或推荐最佳方法吗?谢谢。
最佳答案
$(document).ready(function() {
var last;
$(".capitalize").on('keyup', function(event) {
var key = event.keyCode || event.which,
pos = this.value.length,
value = this.value;
if (pos == 1 || last == 32 && (last !== 8 || last !== 46)) {
this.value = value.substring(0, pos - 1) +
value.substring(pos - 1).toUpperCase();
}
last = key;
});
});
http://jsfiddle.net/userdude/tsUnH/1