2016-09-02 83 views
0

我想检查用户在选择他的名字时是否输入无效字符。我的代码几乎可行。唯一的问题是当我输入一个有效的用户名f.e. “约翰”,并添加一个无效的字符“约翰!!”它没有检测到它。当我只输入无效字符“!!!!”它被检测到。检查输入是否包含无效字符

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"; 
     } 
    } 
+0

它意味着只允许[A-Z]和[A-Z]吗? –

回答

4

你将有你的正则表达式改为

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

这是因为你需要检查的整个字符串有效性,而不是你所做的第一个字符。
+允许先前的序列出现多次,并且$将其限制为字符串的结尾。也就是说,字符串必须以您指定的字符开始和结束。

+0

谢谢。完美工作。 – user5462581

0

尝试这种情况:

$('#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(); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="ID" type="text" />

相关问题