2016-09-02 130 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" />

相關問題