javascript - 防止特殊字符输入到html文本字段

标签 javascript html validation

我有一个输入文本字段,需要限制可以输入哪些字符。作为防止错误输入的一种形式,我什至试图不让用户输入错误的内容。输入可以是 [a-zA-Z-._] 个字符,并且限制为 32 个字符。

<input id="aliasEntry" type="text" maxlength="32">

如您所见,我已经确定了 32 个字符的限制,并且在达到限制后用户将无法再输入任何内容。但是我在防止输入错误字符方面遇到了问题。

我试过使用 jquery 的 .keypress() 和 .keydown() 事件捕捉器来做类似下面的事情:

$("#aliasEntry").keypress(function(e)
{
    var code = e.which || e.keyCode;
    // 65 - 90 for A-Z and 97 - 122 for a-z 95 for _ 45 for - 46 for .
    if (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 95 || code == 46 || code == 45))
    {
        var text = $("#aliasEntry").val();
        text = text.substring(0,text.length);
        $("#aliasEntry").val(text);
    }
});

但问题是浏览器总是在事件处理后将键入的字符插入文本框,这使得代码无用,因为我试图消除的字符尚未输入。有没有办法简单地阻止浏览器在用户键入字符后将字符插入文本框?

最佳答案

您正在使用 jQuery,所以请看:http://api.jquery.com/event.preventDefault/ . 如果字符碰巧无效,只需调用 e.preventDefault(),这应该会阻止默认浏览器操作的发生,在本例中是插入一个字符。

关于javascript - 防止特殊字符输入到html文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3552301/

相关文章:

javascript - 如何创建一个在关闭状态下加载的 3 层 Accordion ?

javascript - 了解 ember-cli/loader.js require._stats 属性

javascript - Angular JS 表单验证

html - 列表中的 ionic 元素不是全宽

javascript - 中等编辑器中输入的最大长度/字符

validation - 拉丁字母的Grails约束

javascript - 尝试使用react-mde markdown编辑器时出现"undefined is not a function"

javascript - 如何通过不同的点击同时更改多个 CSS?

html - 具有三个元素的 Twitter-Bootstrap 导航标题(iOS 样式)

java - Tapestry 5 绕过验证