2011-09-18 2 views
4

이전에 here과 관련하여 도움을 받았지만 지금은 입력에 HTML5 autofocus을 사용하려하고 있습니다. 이제는 코드가 손상됩니다.전파 및 keydown에 대한 jQuery 문제

<script type="text/javascript"> 
var $j = jQuery.noConflict(); 

$j(':not(form)').keydown(function(event) { 

    $j('form').keydown(function(event) { 
     event.stopPropagation(); 
    }); 

    if(event.keyCode==82) { 
     $j(document).trigger(location.href = '/?random') 
    } 
}); 
</script> 

는 기본적으로, 일부 키보드 탐색 사용자가 설정 한 :

는 여기에 내가 함께 일하고 있어요 코드입니다. R 키를 누르면 임의의 페이지로 이동합니다.

명백한 이유로 사용자가 양식/입력 상자에 입력 할 때 해당 기능을 사용하지 않으려했습니다. 이 코드는 자동 초점을 사용하려고 할 때를 제외하고 작동합니다. pageload에서 바로 입력을 시작하고 입력 한 첫 번째 문자가 R이면 임의의 페이지로 이동합니다.

다른 문자를 먼저 입력하면 R이 일반 문자로 입력됩니다. 나는이 물건에 일종의 초보자이다. 그래서 어떤 도움이라도 매우 바르게 평가된다! 감사.

EDIT : 추가 테스트를하면 자동 포커스가 아닐 수도 있지만 주로 입력 된 첫 글자가 R 인 경우 버그가 발생합니다.

답변

0

선택자가 "not"로 잘못되었습니다.

<script type="text/javascript"> 

$(document).ready(function(){ 
    $('body').keydown(function(event) { 
     if(event.keyCode==82) { 
      $(document).trigger(location.href = '/?random') 
     } 
    }); 
    $('input, textarea').keydown(function(){ 
     event.stopPropagation(); 
    }); 
}); 
</script> 
+0

'event.stopPr opagation()'은 실제로 이벤트를 멈추고,'return false'는'event.preventDefault();'를 수행합니다. – Rafay

+0

stopPropagation은 이벤트를 멈추지 않습니다. 이벤트가 트리를 버블 링하는 것을 중지합니다. – gislikonrad

+0

업데이트 된 답변 – jancha

0

다른 요소에서 keydown이 호출 될 때마다 keydown 이벤트를 양식 요소에 추가하는 것이 중요합니다.

HTML :

<form> 
    <input type="text" autofocus /> 
    <input type="text" /> 
    <input type="text" /> 
    <input type="text" /> 
    <textarea></textarea> 
    <div id="results"> 
    </div> 
</form> 

JS

여기

http://jsfiddle.net/CAjNR/1/

가 바이올린에서 코드의 ... 난 당신의 JS 조금 변경 ..이 밖으로 시도
var $j = jQuery.noConflict(); 

$j(document).keydown(function(event) { 
    var key = event.keyCode | event.which; 
    if(key==82) { 
     $j('#results').append($j('<div>pressed: r</div>')); 
    } 
}); 
$j('input, textarea').keydown(function(event) { 
    event.stopPropagation(); 
}); 
+0

'event.keycode | event.which'는 아마도'event.keycode || '일 필요가 있습니다. 사건 .which' –

+0

사실 그건 상관 없어요. 둘 다 일합니다. – gislikonrad

+0

그리고 오타가 있습니다,'event.keyCode'는'event.keycode'가 아닙니다 –