2009-11-20 5 views
13

IE에서 작동하지만 Opera 나 Firefox에서 작동하지 않습니다. Backspace가 현재 포커스가 SELECT 드롭 다운 인 경우에만 내비게이션을 막고 싶습니다.백 스페이스가 자바 스크립트에서 뒤로 이동하는 것을 방지하려면 어떻게해야합니까?

<html> 
<body> 
<select id="testselect"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
</select> 
<script language="javascript"> 
    document.getElementById("testselect").onkeydown = function(e) { 
     if(!e) { 
      e = event; 
     } 
     alert(e.keyCode); 
     if (e.keyCode == 8 || e.keyCode == 46) { 
     e.returnValue = false; 

     e.cancelBubble = true; 
     if (e.stopPropagation) { e.stopPropagation(); alert("stoppropagation");} 
     if (e.preventDefault) { e.preventDefault(); alert("preventdefault");} 
     return false; 
     } 
    }; 
</script> 
</body> 
</html> 
+1

+1을 다음과 같다 입력 제어 및 텍스트 영역을 제외한 페이지의 모든 요소를 ​​단지 선택 드롭

$(document).ready(function(){ //for IE use keydown, for Mozilla keypress //as described in scr: http://www.codeproject.com/KB/scripting/PreventDropdownBackSpace.aspx $('select').keypress(function(event){if (event.keyCode == 8) {return false;}}); $('select').keydown(function(event){if (event.keyCode == 8) {return false;}}); } 

위한 "backspace navigating"이 keydown에서 작동하고 keyup에서는 작동하지 않는다는 것을 알았 기 때문에 . 나는 항상 페이지에 한 번씩 돌아가고 싶다고 생각했다.하지만 지금은 되돌릴 생각이다. – Mercurybullet

+0

아, 파이어 버그를 설치했고이 샘플은 파이어 폭스에서 작동합니다. 이유는 모르겠다. – hova

답변

0

this article에서 프로젝트의 소스 코드를 확인하십시오. 그는 다른 브라우저에서 백 스페이스 키로 어떻게 대처해야하는지 자세히 설명합니다.

2

그건 내가 생각했던 것보다 까다 롭습니다. 이 페이지에서 멀리 Backspacing을에서 사용자를 방지하는 이유에 따라, this 같은 당신을 위해 작동 될 수 있습니다

<script type="text/javascript"> 

     var bShowWarning = false; 

     document.getElementById("testselect").onkeydown = function(e) { 
      if (!e) { 
       e = event; 
      } 
      if (e.keyCode == 8 || e.keyCode == 46) { 
       bShowWarning = true; 
      } 
     }; 

     function UnLoadWindow() { 
      if (!bShowWarning) return; 
      return 'If you leave the page your data will be lost.'; 
     } 

     window.onbeforeunload = UnLoadWindow; 
    </script> 
9

-

<script type="text/javascript"> 

    //set this variable according to the need within the page 
    var BACKSPACE_NAV_DISABLED = true; 

    function fnPreventBackspace(event){if (BACKSPACE_NAV_DISABLED && event.keyCode == 8) {return false;}} 
    function fnPreventBackspacePropagation(event){if(BACKSPACE_NAV_DISABLED && event.keyCode == 8){event.stopPropagation();}return true;} 

    $(document).ready(function(){ 
     if(BACKSPACE_NAV_DISABLED){ 
      //for IE use keydown, for Mozilla keypress 
      //as described in scr: http://www.codeproject.com/KB/scripting/PreventDropdownBackSpace.aspx 
      $(document).keypress(fnPreventBackspace); 
      $(document).keydown(fnPreventBackspace); 

      //Allow Backspace is the following controls 
      $('input').keypress(fnPreventBackspacePropagation); 
      $('input').keydown(fnPreventBackspacePropagation); 
      $('textarea').keypress(fnPreventBackspacePropagation); 
      $('textarea').keydown(fnPreventBackspacePropagation); 
     } 
    }); 

</script> 
관련 문제