2011-07-04 2 views
1

제출 버튼을 클릭하면 자바 스크립트에서 유효성을 검사 할 텍스트 상자가 있습니다.사용자 입력에 자바 스크립트에서 금지 된 문자가 포함되어 있는지 감지

문자 0-9 및 a-f 및 A-F 만 허용됩니다.

그래서 g-z와 G-Z는 물론 구두점과 같은 다른 문자도 허용되지 않습니다.

내가 지금까지 가지고있는 코드는 다음과 같습니다 작동하지 않는 것

function validate_form () 
{ 
    valid = true; 

    if (document.form.input.value == [a-zA-Z_,.:\|]) 
    { 
     alert ("You can only enter either 0-9 or A-F. Please try again."); 
     valid = false; 
    } 

    return valid; 
} 

.

저는 JavaScript에 익숙하지 않으므로 어느 곳에서 잘못 될지 알려주세요.

+2

'document.form처럼 뭔가를 할 수 있습니다. input.value == [a-zA-Z _,. : \ |]'는 유효한 JS 구문이 아닙니다. 정규 표현식에 대해 읽어보십시오 : https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions –

+0

각각의 나쁜 성격에 대한 경고창을 띄우는 것은 매우 귀찮은 일입니다. 대신 오류 메시지가있는 div 또는 무언가를 숨기기 취소하는 것이 좋습니다. –

답변

3

실제로이 코드를 많이 정리할 수 있습니다. valid을 추적 할 필요가 없으므로 test()true 또는 false 값을 제공합니다. 또한 블랙리스트보다는 허용되는 문자의 화이트리스트를 유지하는 것이 좋습니다. 즉, 우리는 을 알고 있습니다. 문자를 원하지만 모든 문자를 지정할 수는 없습니다. 이 아닙니다. 당신은 또한 사전에 확인을 할 이것을 사용할 수 있습니다

function validate_form() { 
    return /^[a-fA-F0-9]+$/.test(document.form.input.value); 
} 

참고 :

document.form.input.onkeyup = function() { 
    if (!validate_form()) { 
    alert("You can only enter either 0-9 or A-F. Please try again."); 
    } 
}; 
2

구문은 /^[a-zA-Z_,.:\|]+$/.test(document.form.input.value)입니다. ^$을 확인하십시오. 테스트를 거치지 않으면 허용되는 문자가 하나 이상있는 문자열에 대해서도 테스트가 통과합니다.

0

유효성을 검사하는 가장 좋은 방법은 사용자가 잘못된 문자를 입력하도록하지 않는 것입니다. 이 코드를 사용하십시오 (jQuery 버전이지만 JavaScript로 쉽게 변환 할 수도 있습니다).

$('#inputFiledId').keyup(function(e){ 
    // checking the e.keyCode here, if it's not acceptable, the return false (which prevents the character from being entered into the input box), otherwise do nothing here. 
}); 

이것을 사전 점검이라고합니다. 클라이언트 측에서 무엇을 하든지, 서버 측의 값을 항상 확인해야합니다 (서버 측 유효성 검사). form-spoofing과 같이 해킹이 여러 번 발생하므로 항상 확인하십시오.

0

$('input').keyup(function(){ 
    var charac = /[g-zG-Z;:,.|_]/; 
    var result = charac.test($(this).val()); 
    if(result == true){ 
     alert('You can only enter either 0-9 or A-F. Please try again.'); 
    } 
}) 

http://jsfiddle.net/jasongennaro/GTQPv/1/

관련 문제