입력 할 수있는 문자를 제한해야하는 입력 텍스트 필드가 있습니다. 잘못된 입력에 대한 방어 방법 중 하나로서 사용자에게 잘못된 것을 입력하십시오. 입력은 [a-zA-Z -._] 문자 일 수 있으며 32 자로 제한됩니다. html 텍스트 필드에 특수 문자 입력 방지
<input id="aliasEntry" type="text" maxlength="32">
당신이 볼 수 있듯이
, 나는 이미 32 자 제한이 알아 냈있어, 사용자는 한계에 도달하면 더 이상 입력 방지 할 수있다. 하지만 잘못된 문자 입력을 방지하는 데 문제가 있습니다.나는 다음과 같은 것을 할() 이벤트 포수를 jQuery의 .keypress()와 .keydown를 사용하여 시도했다 : 브라우저는 항상 입력 된 문자를 삽입하는 것이
$("#aliasEntry").keypress(function(e)
{
var code = e.which || e.keyCode;
// 65 - 90 for A-Z and 97 - 122 for a-z 95 for _ 45 for - 46 for .
if (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 95 || code == 46 || code == 45))
{
var text = $("#aliasEntry").val();
text = text.substring(0,text.length);
$("#aliasEntry").val(text);
}
});
그러나 이것에 대한 문제를 이벤트가 처리 된 후 텍스트 상자에 입력하면 제거하려고하는 문자가 아직 입력되지 않았기 때문에 코드가 쓸모 없게됩니다. 사용자가 입력 한 후 브라우저가 문자를 텍스트 상자에 삽입하지 못하게하는 방법이 있습니까?
jQuery를 사용할 때 다시 ['e.which'] (http://api.jquery.com/event.which/)를 정규화 할 필요가 없습니다. –
사용자의 키보드가 갑자기 작동하지 않는 이유를 설명하는 UI가있는 것이 가장 좋습니다. – derobert
서버 쪽 유효성 검사도 수행해야합니다. 클라이언트 검증은 바보짓하기가 정말 쉽습니다 (이 경우 브라우저에서 JavaScript를 끄기) –