2016-09-02 30 views
0

名前を変更するときにユーザーが無効な文字を入力したかどうかを確認します。私のコードはほとんど動作します。唯一の問題は、有効なユーザー名を入力するときです。 "John"に無効な文字を追加する "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"; 
     } 
    } 
+0

[A-Z]と[-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" />

関連する問題