使用jQuery禁止在文本区域中击键

使用jQuery禁止在文本区域中击键,jquery,textarea,Jquery,Textarea,在Twitter注册过程中,它们不允许您输入字母数字关键字以外的任何字符 这样做的好方法和有效方法是什么?可用的插件对我来说似乎有点太慢了,因此,我想知道是否有人有更有效的方法来这样做您可以为keydown事件编写一个事件处理程序,例如,如果文本与正则表达式不匹配,它将停止事件的传播。您可以为keydown事件编写一个事件处理程序,它将停止事件的传播例如,如果文本与正则表达式不匹配,则发生事件。您可以侦听keydown/keypress,检查字符代码,如果它不是您想要的preventDefaul

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


这样做的好方法和有效方法是什么?可用的插件对我来说似乎有点太慢了,因此,我想知道是否有人有更有效的方法来这样做

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

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

您可以侦听
keydown
/
keypress
,检查字符代码,如果它不是您想要的
preventDefault()
返回false

实施 下面是一个jQuery示例。这将创建一个“有效”键代码列表,最初使用格式化程序(转义、退格等)填充,然后使用其他有效键填充数组

$('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();
});​
$(“输入”).keydown(函数(e){
变量a=[8,9,13,16,17,18,20,27,35,36,37,38,39,40,45,46,91,92];
var k=e,其中;
对于键盘顶部的(i=48;i<58;i++)//0-9
a、 推(i);
对于(i=65;i<91;i++)//a-z
a、 推(i);
对于numpad上的(i=96;i<106;i++)//0-9
a、 推(i);
如果(!(a.indexOf(k)>=0))//防止禁用键
e、 预防默认值();
});​
您还可以使用此数组在提交之前检查用户名的有效性,方法是迭代字符串中的每个字符并确保它是其中之一

在这里试一试

您可以监听
按键
/
按键
,检查字符代码,如果它不是您想要的
preventDefault()
返回false

实施 下面是一个jQuery示例。这将创建一个“有效”键代码列表,最初使用格式化程序(转义、退格等)填充,然后使用其他有效键填充数组

$('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();
});​
$(“输入”).keydown(函数(e){
变量a=[8,9,13,16,17,18,20,27,35,36,37,38,39,40,45,46,91,92];
var k=e,其中;
对于键盘顶部的(i=48;i<58;i++)//0-9
a、 推(i);
对于(i=65;i<91;i++)//a-z
a、 推(i);
对于numpad上的(i=96;i<106;i++)//0-9
a、 推(i);
如果(!(a.indexOf(k)>=0))//防止禁用键
e、 预防默认值();
});​
您还可以使用此数组在提交之前检查用户名的有效性,方法是迭代字符串中的每个字符并确保它是其中之一

在这里试一试 我使用这个插件:

我没有遇到任何延迟问题。

我使用这个插件:


我没有遇到任何延迟问题。

请注意,您可能也希望筛选剪贴板中的粘贴,并在服务器上重新验证字符串。马上,谢谢4 e提醒!请注意,您可能也想从剪贴板中筛选粘贴内容,并在服务器上重新验证该字符串。马上,谢谢4 e提醒!