Javascript:输入框-自动大写第一个字母,但可以重写

Javascript: input box - autocapitalize first letter but can override

本文关键字:第一个 重写 但可以 输入 Javascript      更新时间:2024-03-06

我有一个名称输入框。我想在用户键入时自动将名称的第一个字母大写,但允许用户覆盖名称的更改,如"de Salis"。

我在这里看到,这在CSS中是不可能的,因为text-transform:capitalize;将大写每个单词,并且不能被覆盖。

.keyup处理程序可以在您键入时修复第一个字母,这里有很多解决方案。

我看不出最初的资本化是如何轻易被高估的。我想我需要一个标志,但如果函数是一个可以附加到多个元素的函数,标志应该放在哪里?我可以附加一个DOM元素作为标志,但这看起来很难看。

在这里可以找到非覆盖模型的小提琴。

建议?

要使输入框仅显示第一个大写字母,您可以直接使用keyCode,因为它始终是大写格式。

仅此一点就可以减轻您使用的昂贵regex.replace()方法的需求。

jQuery:

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

参考:jsFiddle


以下答案已修改为包括Tab Key要求,单击输入框内部并通过上下文菜单进行粘贴,使用键盘粘贴方法(Ctrl+V),然后直接键入。它取消了字符keyCodes,因此国际支持得到认可。jQuery选择器是在此处获得的。

RE修订:jsFiddle提交时不强制使用大写字母。