이 동작은 특정 브라우저에만 적용됩니다. IE는 화살표 키를 기반으로 라디오를 선택하는 것처럼 보입니다. 반면 Chrome은 그렇지 않습니다.
즉, jQuery를 통해 keydown
이벤트를 방지하면이 동작을 비활성화 할 수 있습니다. 이 문서 전체에 적용되지 않도록 I는 DIV (또는 라디오 버튼을 감싸고 다른 요소)에이 일을하는 것이 좋습니다 : 이것을 달성하는 또 다른 방법이있다
$('div.wrap').keydown(function(e) {
if (e.which > 36 && e.which < 41) {
e.preventDefault();
}
var $checkedRadio = $('input[type=radio]:checked');
if ($checkedRadio.size() > 0) {
$checkedRadio.removeAttr('checked');
if (e.which == 38 || e.which == 39) {
var $nextRadio = $checkedRadio.next('input[type=radio]');
if ($nextRadio.size() > 0) {
$nextRadio.attr('checked', 'checked');
} else {
$('input[type=radio]:first').attr('checked', 'checked');
}
}
else if (e.which == 37 || e.which == 40) {
var $prevRadio = $checkedRadio.prev('input[type=radio]');
if ($prevRadio.size() > 0) {
$prevRadio.attr('checked', 'checked');
}
else {
$('input[type=radio]:last').attr('checked', 'checked');
}
}
}
});
, 그리고 추적하는 것입니다 어떤 키를 누르면, 당신의 클릭으로 그것을 확인한다() 이벤트 : 여기
var keyPressed;
$('input').click(function(e) {
if (keyPressed && keyPressed > 36 && keyPressed < 41) {
e.preventDefault();
e.stopPropagation();
// key pressed during click
}
else{
// normal click
}
});
$(document).keydown(function(e) {
keyPressed = e.which;
});
$(document).keyup(function(e) {
keyPressed = null;
});
왜 기본 동작을 재정의 하시겠습니까? _your_ 코드를 수정해야하는 것처럼 들립니다. – TheZ
그리고 어떤 html과 자바 스크립트로 작업하고 있습니까? [JS Fiddle] (http://jsfiddle.net/) 또는 이와 유사한 라이브 데모를 게시 할 수 있습니까? –
이것은 내 피들입니다 : http://jsfiddle.net/TKWzH/4/ 키보드를 통해 탐색 할 때 화살표 키를 눌러 라디오 버튼을 누르면 대화 상자가 닫힙니다. 라디오 버튼을 탐색하고 입력 (또는 마우스 클릭) 할 때이를 닫을 수 있어야합니다. 올바른 동작은 "Test Pop2"에 있지만 실제 스크립트에는 대화 상자를 열고 닫는 기능보다 훨씬 많은 기능이 포함되어 있습니다. enter 키와 mousedown 기능을 하나로 결합하는 방법이 있습니까? – teeth