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

Javascript:输入框-自动大写第一个字母,但可以覆盖,javascript,jquery,input,capitalize,Javascript,Jquery,Input,Capitalize,我有一个名字输入框。我希望在用户键入时自动大写名称的第一个字母,但允许用户覆盖名称的更改,例如“de Salis” 我发现这在CSS中是不可能的,因为文本转换:大写将大写每个单词,并且不能被重写 一个.keyup处理程序可以在您键入时修复第一个字母,有很多解决方案可以做到这一点 我看不出最初的资本化是如何轻易被推翻的。我想我需要一个标志,但是如果函数是一个可以附加到多个元素的函数,那么标志应该放在哪里呢?我可以附加一个DOM元素作为标志,但这看起来很难看 发现了一些非覆盖模型 建议?要使输入框仅

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

我发现这在CSS中是不可能的,因为
文本转换:大写将大写每个单词,并且不能被重写

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

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

发现了一些非覆盖模型


建议?

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

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

jQuery:

$('.auto').one('keyup', function(e) {
    $(this).val(String.fromCharCode(e.keyCode));
});
参考资料:


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


重新修订:(不强制提交大写字母)。

也许可以试试.one()是的,beautiful@jSweazy。我已经创建了一个更新的提琴:把它写下来作为答案,我会打勾:)继续接受@arttronics AnswerThank。我正等着看你是否回答:)有点小麻烦。如果将
选项卡
插入输入框,它将启动该函数并将光标投射到输入框中。另一种方法在您使用tab-in时也会触发,但它仅在使用
keyCode
方法时才变得明显,因为另一种方法不会移动光标。我必须解决这个问题:)请参阅新JSFIDLE的状态更新。干杯我的法式AZERTY键盘呢?当我键入一个
时,我得到一个
2
!;)@Cyrille,我相信我最新的JSFIDLE现在应该可以与国际键盘配合使用了。干杯这里有更多关于
input
的信息,请查看我答案中的参考资料,了解我从哪里获得了整个选择器。干杯