jQuery限制可以输入到输入中的字符

时间:2016-11-20 18:28:05

标签: javascript jquery

我有以下jquery强制输入到输入框的字符为大写。

jQuery(document).ready(function() {
    jQuery('.uppercase').keyup(function()
    {
        jQuery(this).val(jQuery(this).val().toUpperCase());
    });
});

我想限制输入,以便只能输入英文字母数字字符。解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用regular expression将每个特殊字符替换为无效。

jQuery(document).ready(function() {
    jQuery('.uppercase').keyup(function()
    {
        jQuery(this).val(jQuery(this).val().replace(/[^\w\s]/gi, '').toUpperCase());
    });
});

您将通过常规explession指定的内容发送到void character('')。

在正则表达式中,您可以看到键 ^ ,表示,键 \ w 表示字母数字字符< / em>和 \ s 表示空格字符。因此,您要发送的所有内容都不是字母数字,而不是空格。

如果您不想在您的字段中留出空格,请删除 RegEx 中的\。

PS。这不会阻止用户提交特殊字符,您必须检查服务器端。

等效但清洁正则的表达式可以是:

/\W/gi

您可以查看上面的链接,看看这意味着什么

答案 1 :(得分:0)

执行所需操作的一种非常简单的方法是捕获keydown事件,然后检查密钥ASCII代码。如果它不在0x30 ASCII'0')和0x39 ASCII'9')之间且不在0x41之间( ASCII'A')和0x7a ASCII'z'),然后您只需通过调用event.preventDefault取消该事件。如果您将最后一次ASCII检查从较低'z'0x7a)更改为较高'Z'0x5a),则还可以通过键入小写字符来阻止用户。此外,您可以使用CSS text-transform: uppercase;,这样用户就无法看到转换率较低和较高之间的转换。

jQuery('#test').on('keydown', function(e) {
    var charCode = e.key.charCodeAt(0);
    if (!((charCode >= 0x30 && charCode <= 0x39) || (charCode >= 0x41 && charCode <= 0x7a))) {
        e.preventDefault();
    }
});

jQuery('#test').on('keyup', function(e) {
    jQuery(this).val(jQuery(this).val().toUpperCase());
});
input#test {
    text-transform: uppercase;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test">

如果您使用上限'Z'0x5a)的第二个条件,则keyup转换为上层事件调用是没有意义的,因为您将不会有任何较低的字符输入