我有一个输入文本字段,需要限制哪些字符可以输入.作为防止输入错误的一种形式,我试图甚至不让用户键入不正确的东西.输入可以是[a-zA-Z -._]字符,限制为32个字符.
<input id="aliasEntry" type="text" maxlength="32">
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我已经找到了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);
}
});
Run Code Online (Sandbox Code Playgroud)
但问题是浏览器总是在处理事件后将键入的字符插入到文本框中,这使得代码无用,因为我想要消除的字符尚未输入.有没有办法简单地阻止浏览器在用户输入后将字符插入文本框?