系统中的所有数据都必须保存为大写,除了一些例外(密码、电子邮件、登录名......),所以我创建了一个css来做视觉技巧
input[type="text"], textarea { text-transform:uppercase; }
.small_case { text-transform:smallcase !important; }
对异常字段使用small_case
类(密码不需要这个)。
但是众所周知,这将server-side
在用户输入时保留值。
例子:
- 输入:ABCD
- 视觉:ABCD
- 服务器:abcd
所以我对这个问题做了一个jQuery函数"fix"
:
$(document).ready(function () {
$("input, textarea").on('keypress blur', function () {
if ($(this).hasClass('small_case')) {
$(this).val($(this).val().toLowerCase());
}
else {
$(this).val($(this).val().toUpperCase());
}
});
});
PS:为什么我使用keypress
AND blur
?
- 右键单击并将值粘贴到输入中
- 按回车键保存或进行搜索
- 结果:该值将作为用户输入。不是大写
但是,我有一个小问题
在某些输入中,我使用了一个掩码组件,它创建了基本结构
例子:
- 数值输入:ABC1234
- 掩码输入:_ _ _ _ _ _ _
- 而输入:AB_ _ _ _ _;ABC12_ _ ;
使用上面的 jQuery 代码,插入符号将位于末尾
例子:
- A_ _ _ _ _ _ | (其中|是我的插入符号光标)
我试图做什么,但不确定这如何或是否是正确/最佳的解决方案?
- 通过正则表达式查找与我上次键入的字符具有相同键码的最后一个字符的索引,并将克拉设置为该位置。
- 仅使用模糊,将避免该问题,但我属于jQuery 代码下方的PS 。
所以……有什么建议吗?