JQuery在文本框中只允许字母、数字和正斜杠

JQuery to allow only alphabets, numeric and forward slash in TextBox

本文关键字:数字 许字母 文本 JQuery      更新时间:2023-09-26

我在ASP中有一个文本字段。. NET和我想只允许字母数字和正斜杠(/)键。我尝试了以下代码

function jsCheckInput(e) {
    var evt = (e) ? e : window.event;
    var key = (evt.keyCode) ? evt.keyCode : evt.which;
    if (key != null) {
        key = parseInt(key, 10);
        if (key < 47 || (key > 57 && key < 65) || (key > 90 && key < 97) || key > 122) {
            if (!jsIsUserFriendlyChar(key)) {
                return false;
            }
        }
        else {
            if (evt.shiftKey) {
                return true;
            }
        }
    }
    return true;
}
function jsIsUserFriendlyChar(val) {
    // Backspace, Tab, Enter, Insert, and Delete  
    if (val == 8 || val == 9 || val == 13 || val == 45 || val == 46) {
        return true;
    }
    // Ctrl, Alt, CapsLock, Home, End, and Arrows  
    if ((val > 16 && val < 21) || (val > 34 && val < 41)) {
        return true;
    }
    return false;
}

在web表单页面中,我添加了如下内容

<asp:TextBox ID="text_value" CssClass="textbox" onkeydown="return jsCheckInput(event);" runat="server"></asp:TextBox>

在这里我可以输入字母和数字,但我不能输入值/。我已经启用了shift键,所以我可以给shift + ?输入正斜杠。另一个问题是,当我按shift +任何数字键时,像! @ # $ % ^ & * ( ) ...这样的特殊字符也会出现在tet字段中。我哪里做错了?

如果你想使用正则表达式。

const regex = /^[a-z0-9'/]+$/gi;
const str = `asdasdas/asdfaASDASDA`; //test string
if(regex.test(str )){
     console.log('Allowed'+str);
  }
这里的

测试

键入正斜杠不需要shift键。正斜杠(/)的关键代码为191。在if条件中也加上这个。

function jsCheckInput(e) {
    var evt = (e) ? e : window.event;
    var key = (evt.keyCode) ? evt.keyCode : evt.which;
    if (key != null) {
        key = parseInt(key, 10);
        if (key < 47 || (key > 57 && key < 65) || (key > 90 && key < 97) || key > 122 || key != 191) {
            if (!jsIsUserFriendlyChar(key)) {
                return false;
            }
        }
    }
    return true;
}

SOLUTION

最后找到了如下的解决方案,

function jsCheckInput(e, t) {
    try {
        if (window.event) {
            var charCode = window.event.keyCode;
        }
        else if (e) {
            var charCode = e.which;
        }
        else { return true; }
        if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || (charCode > 46 && charCode < 58))
            return true;
        else if (jsIsUserFriendlyChar(charCode))
            return true;
        else
            return false;
    }
    catch (err) {
        alert(err.Description);
    }
}

这段代码工作完美!!