2012-04-13 2 views
0

jQuery에서 # $ @ %와 같은 금지 된 문자를 사용자가 입력 할 때 경고 메시지를 표시합니다. 문제는 사용자가 해당 문자를 입력 할 때 SHIFT 키를 사용하므로 두 개의 키가 있다는 것입니다.jQuery에서 잠깐 keyup() 이벤트를 차단하려면 어떻게해야합니까?

어떻게하면 두 번째 문제가 발생하지 않도록 할 수 있습니까?

if (!regex.test(lastCharacter) 
    alert('forbidden character'); 

덕분에 많은

답변

1
당신은 입력이 변경 될 때 방출하는 입력 이벤트에 바인딩 할 수 있습니다

, 그러나 이것은 IE9 이후에만 지원됩니다. 그 전에는 입력 값이 변경 될 때 발생하는 propertychange 이벤트 (IE에서만 해당)에 바인딩 할 수 있습니다. 아래 예제는 대부분의 브라우저에서 IE9에서 콜백을 두 번 트리거 할 수 있으므로 입력 이벤트 지원을 확인하고 대신 그에 따라 행동해야 할 수도 있습니다. 여기 내 나쁜

http://jsfiddle.net/X4qNf/

은 당신이 그것을 옛날 방식을 지정해야 할 수도 있습니다 작동하지 않는 경우는, IE의 시도에 대해서 PropertyChange와 하나입니다.

$('#boo')[0].onpropertychange = function() {}; 
당신의 응답을

http://jsfiddle.net/X4qNf/2/

+0

안녕 주셔서 감사합니다. 사파리와 파이어 폭스로 당신의 솔루션을 시도했습니다. onpropertychange도 IE와 함께 사용할 수 있습니까? 고마워요. – eric01

+0

이 상자에는 아무 IE도 테스트하지 않았지만 http://help.dottoro.com/larrqqck.php가 작동해야한다고 주장합니다. (특별한 경우는 테스트하지 않았습니다) – GillesC

+0

textInput 이벤트가있는 것 같습니다. 실제로 문자 입력에 대한 구체적인 후보자 (IE9에서 다시) – GillesC

1

이 작동하는지 나는 아무 생각이 없다,하지만 당신은 아이디어를 얻을 :

$("#myInput").keyup(function(e) { 
    if(e.which == 16) { 
     $(this).keyup(function(event) { 
      if(event.which==16) event.preventDefault(); 
     }); 

     setTimeout(function() { 
      $("#myInput").off('keyup'); 
     },1000); 
    } 
});​ 
관련 문제