3

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

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

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

我看不到如何轻松覆盖原始大写。我想我需要一个标志,但如果该函数是一个可以附加到多个元素的函数,那么标志应该在哪里?我可以附加一个 DOM 元素作为标志,但这看起来很丑陋。

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

建议?

4

1 回答 1

3

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

仅此一项就可以减轻对昂贵regex.replace()使用方法的要求。

jQuery:

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

参考: jsFiddle


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

重新修订: jsFiddle提交时不强制大写字母。

于 2012-07-26T08:58:05.633 回答