【问题标题】:Disable symbols and non-letters in input field禁用输入字段中的符号和非字母
【发布时间】:2015-11-28 16:12:53
【问题描述】:

我想禁用输入字段中与以下内容无关的所有符号:字母、数字、空格、和号或句号。

例如 允许:A-Z、a-z、0-9、&、.,并且允许空格。

不允许:所有其他字符,例如! @#$​​%^*()-+=[]; : ' " , / ? | = ` ~ etc.

<input id="ItemName" type="text" />

【问题讨论】:

  • What have you tried 到目前为止?
  • HTML5 可以吗?如果是这样,您可以使用 pattern 属性并给出一个简单的正则表达式。类似pattern="[A-Za-z0-9&amp; .]*"

标签: javascript forms input field


【解决方案1】:

如果您不“喜欢”新输入,您可以注册一个按键事件处理程序并返回 false:

$('#ItemName').keypress(function (e) {
    var txt = String.fromCharCode(e.which);
    if (!txt.match(/[A-Za-z0-9&. ]/)) {
        return false;
    }
});

JSFiddle:http://jsfiddle.net/cgx1yqyf/

请注意,此解决方案需要 JQuery

【讨论】:

  • 这只是部分解决方案。如果我将文本粘贴或拖动到文本框中,keypress 不会触发。
  • 这不会给Uncaught ReferenceError: $ is not defined吗?
  • @nnnnnn 此特定解决方案需要 JQuery 库,请注意,正如 dman2306 所述,此解决方案不涵盖粘贴场景
  • (是的,我知道它需要 jQuery,这就是我的观点。OP 没有提到 jQuery,你的回答也没有提到它,它只是继续使用它。)跨度>
  • 大家好,很高兴使用 jQuery/Javascript。你的例子很好,但我不能做空格?我可以有一个完整的解决方案吗?谢谢:)
【解决方案2】:

正确的方法是使用“输入”事件。 document.addEventListener('input', script); https://developer.mozilla.org/en-US/docs/Web/Events/input

【讨论】:

    【解决方案3】:
    Question is old, but it's never too late to answer
    
    $(document).ready(function() {
      //prevent paste
      var usern_paste = document.getElementById('yourid');
      usern_paste.onpaste = e => e.preventDefault();
    
      //prevent copy
      var usern_drop = document.getElementById('yourid');
      usern_drop.ondrop = e => e.preventDefault();
    
    $('#yourid').keypress(function (e) {
      var regex = new RegExp("^[a-zA-Z0-9\s]");
      var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
      if (regex.test(str)) {
          return true;
      }
      e.preventDefault();
      return false;
    });
    });
    

    【讨论】:

      【解决方案4】:

      是的,是的,我知道。这个问题很老了。但我只是试一试(没有 jQuery)

      HTML

      <input type="text" placeholder="Try to put a non-alphabetical character here! (you can put a number and a space too)" id="nochars" />
      

      JS

      const input = document.getElementById("nochars"); // gets the element (the input) by it's id
      input.addEventListener("input", (event) =>  {
        const char = String.fromCharCode(event.keyCode)); // changes the keycode from a int to a string
        if (!(/[a-zA-Z0-9\s\.$]/.test(char))) {
          event.preventDefault(); // prevents the default (which is adding the character to the value)
        }
      });
      

      另外,检查EventTarget.addEventListener does 的内容。 (\s 是一个空格 - 一个空格)

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 1970-01-01
        • 2012-09-22
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 2021-12-03
        • 2015-12-17
        • 2015-09-13
        相关资源
        最近更新 更多