【问题标题】:JQuery to allow only alphabets, numeric and forward slash in TextBoxJQuery 在 TextBox 中只允许字母、数字和正斜杠
【发布时间】:2017-03-24 10:17:24
【问题描述】:

我在 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;
}

在我添加的网页表单页面中,如下所示,

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

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

【问题讨论】:

标签: javascript jquery html asp.net keyboard


【解决方案1】:

如果你想使用正则表达式。没有的请忽略

const regex = /^[a-z0-9\/]+$/gi;
const str = `asdasdas/asdfaASDASDA`; //test string

if(regex.test(str )){
     console.log('Allowed'+str);
  }

测试here

【讨论】:

    【解决方案2】:

    你不需要 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;
    }
    

    【讨论】:

      【解决方案3】:

      解决方案

      终于找到了如下解决方案,

      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);
          }
      }
      

      这段代码完美运行!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        • 2011-01-01
        • 2011-05-19
        • 1970-01-01
        • 2013-11-04
        相关资源
        最近更新 更多