Javascript 如何将字符添加到此验证函数?

Javascript 如何将字符添加到此验证函数?,javascript,jquery,validation,Javascript,Jquery,Validation,这是对文本字符的Ajax验证,它只允许我输入a-z和0-9的字母,而不允许输入任何其他字符,但我希望它也允许我输入下划线字符。检查keyCode和shiftKey: $(function(){ $('input[name="username"]').keydown(function(key){ if (jQuery.inArray(key.keyCode, [8,37,39,48,49,50,51,52,53,54,55,56,57,65,66,

这是对文本字符的Ajax验证,它只允许我输入a-z和0-9的字母,而不允许输入任何其他字符,但我希望它也允许我输入下划线字符。

检查keyCode和shiftKey:

$(function(){
    $('input[name="username"]').keydown(function(key){
        if (jQuery.inArray(key.keyCode, 
            [8,37,39,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90])
             == -1 || key.shiftKey ){
                return false;
        }
    });
});

正如其他人提到的,如果您需要在客户端进行严格的验证,您需要做的不仅仅是处理keydown事件。

检查keyCode和shiftKey:

$(function(){
    $('input[name="username"]').keydown(function(key){
        if (jQuery.inArray(key.keyCode, 
            [8,37,39,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90])
             == -1 || key.shiftKey ){
                return false;
        }
    });
});

正如其他人提到的,如果您需要在客户端进行严格的验证,那么您需要做的不仅仅是处理keydown事件。

将代码27添加到数组?

将代码27添加到数组?

一种更具可读性的方法是

(key.shiftKey && key.keyCode == 109)

还请注意,在按键事件上进行验证不会阻止某人使用鼠标复制/粘贴任何txt。

一种更具可读性的方法是

(key.shiftKey && key.keyCode == 109)
$('input[name="username"]').keydown(function() {
    $(this).val($(this).val().replace(/[^a-zA-Z0-9_]/g, ''));
});
还请注意,在按键事件上进行验证不会阻止某人使用鼠标复制/粘贴任何txt

$('input[name="username"]').keydown(function() {
    $(this).val($(this).val().replace(/[^a-zA-Z0-9_]/g, ''));
});
在将无效字符输入字段之前,事件处理程序会尝试捕获这些字符,以防止在显示无效字符并再次删除键控时出现分心的“跳跃”效果。请注意,event.com包含由jQuery规范化的字符代码

处理程序需要捕获使用Ctrl-V输入的字符。请注意,不幸的是,它无法使用菜单选项“编辑>粘贴”捕获输入。额外的测试是必要的,以阻止输入字段在每次由更改其值引起的键控后返回其最左边的位置。现在,只有当有东西需要移除时,它才会重置其位置

你可以在电脑上测试

在将无效字符输入字段之前,事件处理程序会尝试捕获这些字符,以防止在显示无效字符并再次删除键控时出现分心的“跳跃”效果。请注意,event.com包含由jQuery规范化的字符代码

处理程序需要捕获使用Ctrl-V输入的字符。请注意,不幸的是,它无法使用菜单选项“编辑>粘贴”捕获输入。额外的测试是必要的,以阻止输入字段在每次由更改其值引起的键控后返回其最左边的位置。现在,只有当有东西需要移除时,它才会重置其位置


您可以在上进行测试。

“Ajax验证”?这与此无关。您的问题比keydown事件更大,因为下划线字符需要移位。“Ajax验证”?这与此无关。由于下划线字符需要移位,您的问题比keydown事件更大。27?你从哪儿弄来的?27?27是从哪里来的?189是IE的关键代码;jQuery规范化event.which,它将分配代码109。参见。189是IE密钥代码;jQuery规范化event.which,它将分配代码109。看。谢谢,但它仍然允许我输入非法字符,我只需要a-z 0-9和下划线,但它仍然允许我输入非法字符,我只需要a-z 0-9和下划线这是最好的答案,因为需要下划线、shift键、向下键和按键,规范化和所有的jazz:现代浏览器有一个粘贴事件,它触发得太早,但是您可以在事件处理程序内部使用零延迟的setTimeout来捕获鼠标粘贴。这是最好的答案,因为需要下划线、shift键、向下键和按键,规范化和jazz:现代浏览器有一个粘贴事件,它触发得太早,但是您可以使用事件处理程序内部的零延迟setTimeout来捕获鼠标粘贴。