我想检查用户在选择姓名时是否输入了无效字符。我的代码几乎可以工作唯一的问题是当我输入有效的用户名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";
}
}
答案 0 :(得分:4)
您必须将正则表达式更改为
/^[a-zA-Z0-9ßÄÖÜäöü_.-]+$/
这是因为你需要检查整个字符串的有效性,而不是像你那样检查第一个字符
+
允许前一个序列出现多次,$
将其限制为字符串的结尾。这意味着,字符串必须以您指定的字符开头和结尾。
答案 1 :(得分: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();
}
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="ID" type="text" />
&#13;