我有一个输入文本字段,需要限制哪些字符可以输入。作为防止输入错误的一种形式,我试图甚至不让用户键入不正确的内容。输入可以是[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);
}
});
但问题是,浏览器总是在处理事件后将键入的字符插入文本框中,这使得代码无用,因为我想要消除的字符尚未输入。有没有办法简单地阻止浏览器在用户输入后将字符插入文本框?
答案 0 :(得分:5)
您正在使用jQuery,请参阅:http://api.jquery.com/event.preventDefault/。
如果角色碰巧无效,只需调用e.preventDefault()
,这样可以防止发生默认的浏览器操作,在这种情况下会插入一个字符。
答案 1 :(得分:0)
像这样使用你的输入
<input maxlength="32" onKeyUp="chText()" onKeyDown="chText()" id="aliasEntry"/>
并使javascript写入chText()
函数
以下代码
function chText()
{
var str=document.getElementById("aliasEntry");
var regex=/[^a-z]/gi;
str.value=str.value.replace(regex ,"");
}
除a-z
和A-Z