用jQuery禁止textarea中的击键

时间:2010-09-13 22:34:03

标签: jquery textarea

在Twitter注册过程中,他们不允许您输入除字母数字关键字以外的任何字符

什么是好方法,有效的方法呢?可用的插件似乎有点太慢了,所以我想知道是否有人有更有效的方式这样做

3 个答案:

答案 0 :(得分:3)

您可以收听keydown / keypress,查看字符代码,如果不是您想要的内容preventDefault()return false

实施

这是jQuery的一个例子。这将创建一个“有效”密钥代码列表,最初填充格式化程序(Escape,Backspace等),然后使用其他有效密钥填充数组。

$('input').keydown(function(e) {
    var a=[8,9,13,16,17,18,20,27,35,36,37,38,39,40,45,46,91,92];
    var k = e.which;

    for (i = 48; i < 58; i++) // 0-9 on top of keyboard
        a.push(i);
    for (i = 65; i < 91; i++) // a-z
        a.push(i);
    for (i = 96; i < 106; i++) // 0-9 on numpad
        a.push(i);

    if (!(a.indexOf(k)>=0)) // prevents disabled keys
        e.preventDefault();
});​

您还可以使用此数组在提交之前检查用户名的有效性,方法是迭代字符串中的每个字符,并确保它是其中之一。

在这里试试

http://jsfiddle.net/vRJ2v/

答案 1 :(得分:2)

我使用这个插件: http://code.google.com/p/jquery-keyfilter/

我没有任何延迟问题。

答案 2 :(得分:1)

您可以为keydown事件编写事件处理程序,例如,如果文本与正则表达式不匹配,则会停止事件的传播。