2012-11-05 4 views
2

사용자의 키 누르기와 일치하는 정규식이 있습니다. 나는 그것에 상당히 집착하고있다.jQuery를 사용하여 사용자가 텍스트 상자에 특정 문자를 입력하지 못하게하려면 어떻게해야합니까?

<script type="text/javascript"> 
    $('input.alpha[$id=tb1]').keydown(function (e) { 
     //var k = e.which; 
     //var g = e.KeyCode; 
     var k = $(this).val(); 
     //var c = String.fromCharCode(e.which); 
     if (k.value.match(/[^a-zA-Z0-9 ]/g)) { 
      e.preventDefault(); 
     } 
    }); 
</script> 

여기서의 목표는 정규 표현식 안에있는 문자를 입력에서 사용자를 방지하는 것입니다 :

여기에 내 현재 코드입니다.

귀하의 답변은 큰 도움이 될 것입니다. 고맙습니다.

+2

을 : 어디서? –

+0

또한'k = $ (this) .val()'일 때'k.value'가 필요한 이유는 무엇입니까? 중복을 확인 했습니까? 나는 많은 비슷한 질문이 있다고 확신한다. [this] (http://stackoverflow.com/q/2919898/944681), [this] (http://stackoverflow.com/q/7543059/944681), [this] (http://stackoverflow.com/q/2500620/944681) 그리고 더 많은 것. –

+0

나는 조금 지저분한 이유가되는 코드를 조정 해왔다. 내가 뭘 하려는지 사용자가 키보드에서 문자를 누르면 그것이 기본을 방지합니다 정규식과 일치하는 경우입니다. –

답변

3

fromCharCode 방법을 사용해보십시오 ". 여기 IE9에 오류 메시지가"

$(document).ready(function() { 
    $('#tb1').keydown(function (e) { 

    var k = String.fromCharCode(e.which); 

    if (k.match(/[^a-zA-Z0-9]/g)) 
     e.preventDefault(); 
    }); 
}); 
+0

하나만 존재합니다 이 문제. 백 스페이스 키도 차단합니다. –

+0

@ MichaelS.Miller 백 스페이스도 유지하려면 '/ [^ a-zA-Z0-9 \ x08]/g' 정규식에'\ x08'을 추가하면됩니다. – Korikulum

2

keydown 대신 keypress을 사용하고 기본 동작을 방지합니다. |

$("#target").keypress(function(e) { 
    if (e.which === 119) { // 'w' 
    e.preventDefault(); 
    } 
}); 

Live Copy :

예를 들어,이 텍스트 입력에 w를 입력 방지 Source

업데이트 : 그것은 당신에게 문제를주고 정규식 적용 인 경우 :

$("#target").keypress(function(e) { 
    if (String.fromCharCode(e.which).match(/[^A-Za-z0-9 ]/)) { 
    e.preventDefault(); 
    } 
}); 

Live Copy을 | Source

관련 문제