将字符串转换为大写的jquery

时间:2013-08-14 17:39:50

标签: c# jquery .net css input

系统中的所有数据都必须保存为大写,但有一些例外(密码,电子邮件,登录...),所以我创建一个 css 来做视觉技巧

input[type="text"], textarea { text-transform:uppercase; }
.small_case { text-transform:smallcase !important; }

small_case 类用于异常的字段(密码不需要此内容)

但众所周知,当用户输入 server-side 时,这会保留价值。

示例:

  • 输入:Abcd
  • visual:ABCD
  • 服务器:Abcd

所以我对 "fix" 问题执行了 jQuery 功能:

$(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:为什么我使用keypressblur

  1. 右键单击并将值粘贴到输入
  2. 按enter键进行保存或搜索
  3. 结果:该值将作为用户输入。不是大写

  4. 但我有一个小问题

    在某些输入中,我使用了一个掩码组件,它创建了基本结构

    示例:

    • 值输入:ABC1234
    • 蒙版输入:_ _ _ _ _ _ _
    • while input:AB_ _ _ _ _; ABC12_ _;

    使用上面的jQuery代码,Caret将定位在最后

    示例:

    • A_ _ _ _ _ _ | (其中 | 是我的插入标记)

    我试图做什么,但不确定这是否是正确/最佳解决方案?

    • 通过正则表达式查找最后一个字符的index与我上次输入的字符具有相同的键码,并将克拉设置为该位置。
    • 仅使用模糊,可以避免问题,但我属于jQuery代码下面的 PS

    那么......有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您应该执行以下操作:

  1. 使用文本转换来修复用户看到的内容

  2. 当值来自客户端

  3. 时利用服务器

    如果出于某种原因你还想按照你的方式去做,那么在修改jquery中的文本之后你就必须修改每个文本框的光标位置。

    请看以下帖子中的一些答案: With jQuery, how do I capitalize the first letter of a text field while the user is still editing that field?