Jquery 不允许我输入下划线

Jquery not allowing me to enter underscore

大家好,我在 jquery 中有以下代码,它不允许我输入下划线。

$(".user-check").on("keydown", function(event){


// Allow controls such as backspace, tab etc.
  
  

switch (event.keyCode) {
    case 8:  // Backspace
    case 9:  // Tab
    case 13: // Enter
    case 16: // Shift
    case 37: // Left
    case 38: // Up
    case 39: // Right
    case 40: // Down
    case 189: // underscore
    break;
    default:
    var regex = new RegExp("^[a-zA-Z0-9.]+$");
    var key = event.key;
    if (!regex.test(key)) {
        event.preventDefault();
        return false;
    }
    break;
}
}); 

我的目标是允许字母数字字符和下划线。没有其他特殊字符

谢谢

这只允许字母数字字符

    $(".user-check").keydown(function (e){
        var k = e.keyCode || e.which;
        var ok = k >= 65 && k <= 90 || // A-Z
            k >= 96 && k <= 105 || // a-z
            k >= 35 && k <= 40 || // arrows
            k == 9 || //tab
            k == 189 || //Underscore 
            k == 46 || //del
            k == 8 || // backspaces
            (!e.shiftKey && k >= 48 && k <= 57); // only 0-9 (ignore SHIFT options)

        if(!ok || (e.ctrlKey && e.altKey)){
            e.preventDefault();
        }
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="user-check" name="username">

你的问题有点不清楚,但如果你只想让用户输入带下划线的字母数字字符,请尝试使用此代码:

var regex = new RegExp("^[a-zA-Z0-9_]*$");
var key = event.key;
if (!regex.test(key)) {
    event.preventDefault();
    return false;
}

此外,您可以避免切换并删除 case: 部分