2010-04-14 2 views
0

checkboxes 입력이 jQuery에 중점을두고있을 때 어떻게 백 스페이스 버튼을 비활성화 할 수 있습니까? checkboxes에 초점을 맞추고 backspace (keycode = 8)를 누르면 브라우저는 내가 페이지를 다시 읽으려고한다고 생각하고 history.go(-1) 명령으로 백 스페이스를 사용합니다.입력 체크 박스가 jQuery에 집중되어있을 때 어떻게 백 스페이스를 비활성화합니까?

$("div#types input").focus(function(){ 
    window.onkeydown = function(e){ 
    return !(e.keyCode == 8); 
}; 
+0

왜 일반적인 브라우저 UI 패턴을 방해하려고합니까? 키보드 단축키가 일반적으로 매우 전문화 된 웹 응용 프로그램을 작성하지 않는 한, 이것이 필수적이라고 열렬히 거부합니다. – Matchu

+0

정확히 내가하고있는 일입니다. 이것은 일반 대중을위한 웹 페이지가 아닙니다. 이 응용 프로그램은 2 대의 컴퓨터에서만 사용되며이 기능이 필요합니다. – sadmicrowave

답변

4

그럼이 다시 탐색에서 항상 백 스페이스 버튼을 중지합니다 :

이제
$(document).keydown(function(e) { 
    if (e.keyCode === 8) 
    { 
    return false; 
    } 
}); 

이 체크 박스가 집중되는 경우에만이 작업을 실행하는 방법을 알아 내기 위해 ...

편집 :

확인란에 포커스가 있는지를 알아내는 데있어 문제는 코드에 탭을 설정했거나 실제로 설정 한 경우에만 포커스를 얻는 것입니다. 클릭하면 체크되지만 실제로는 초점을 맞추지 않습니다 (적어도 크롬/사파리에서는). 이것은 모두 포커스를 설정하는 방법에 따라 다릅니다.

편집 2 :

이 확인란을 만들려면 그것을 클릭 초점을, 그냥이 추가 ...

$('input[type=checkbox]').click(function() { 
    $(this).focus(); 
}); 

를 이렇게 모두 함께 넣어,이 클릭에 체크 박스 초점을 것입니다 체크 박스에 포커스가있을 때 백스 페이스 버튼을 멈추십시오 (물론 $ (document) .ready 함수 안에 모두 들어 있습니다) :

$(document).keydown(function(e) { 
    if (e.keyCode === 8 && $('input[type=checkbox]:focus').size() > 0) 
    { 
     return false; 
    } 
}); 

$('input[type=checkbox]').click(function() { 
    $(this).focus(); 
}); 
+0

해결 방법에 대한 제안 사항이 있으십니까? – sadmicrowave

+0

내 대답을 편집했습니다. – ryanulit

관련 문제