检查输入是否包含无效字符

时间:2016-09-02 13:27:57

标签: javascript html

我想检查用户在选择姓名时是否输入了无效字符。我的代码几乎可以工作唯一的问题是当我输入有效的用户名f.e. "约翰"并为它添加一个无效的字符" John !!"它没有检测到它。当我输入一个无效字符" !!!!"它被检测到了。

HTML:

<input class="user-input" pattern="[a-zA-Z0-9._-ßÄÖÜäöü]{1,30}" type="text" id="idUsername" oninput='checkValidUsername();'"  required disabled>

JavaScript的:

function checkValidUsername()
    {
      var input = document.getElementById("idUsername").value;

      if(input.search(/^[a-zA-Z0-9ßÄÖÜäöü_.-]/) == -1)
      {
        document.getElementById("idValidChars").style.visibility = "visible";
      }
      else
      {
        document.getElementById("idValidChars").style.visibility = "hidden";
      }
    }

2 个答案:

答案 0 :(得分:4)

您必须将正则表达式更改为

/^[a-zA-Z0-9ßÄÖÜäöü_.-]+$/

这是因为你需要检查整个字符串的有效性,而不是像你那样检查第一个字符 +允许前一个序列出现多次,$将其限制为字符串的结尾。这意味着,字符串必须以您指定的字符开头和结尾。

答案 1 :(得分:0)

试试这个:

&#13;
&#13;
$('#ID').keydown(function (e) {
  if (e.shiftKey || e.ctrlKey || e.altKey) {
    e.preventDefault();
  } else {
    var key = e.keyCode;
    if (!((key == 8) || (key == 32) || (key == 46) || (key >= 35 && key <= 40) || (key >= 65 &&             key <= 90))) {
      e.preventDefault();
    }
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="ID" type="text"  />
&#13;
&#13;
&#13;