我有一个输入文本字段,需要限制哪些字符可以输入。作为一种防止错误输入的防御形式,我试图不让用户输入不正确的东西。输入可以是[a-zA-Z -._]个字符,限制为32个字符。防止特殊字符输入到HTML文本字段
<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时,您不必再次对['e.which'](http://api.jquery.com/event.which/)进行标准化。 – 2010-08-23 23:06:56
请记住,最好有一些用户界面解释为什么用户的键盘突然停止工作。 – derobert 2010-12-21 19:38:44
还记得做服务器端验证。客户端验证非常容易欺骗(在这种情况下,在我的浏览器上关闭JavaScript) – 2010-08-23 23:02:39