2009-11-20 21 views
13

Điều này làm việc trong IE, nhưng tôi không thể làm cho nó hoạt động trong Opera hoặc Firefox. Tôi muốn ngăn không cho Backspace điều hướng đi nếu và chỉ khi tiêu điểm hiện tại là thả xuống SELECT.Làm cách nào để ngăn không cho Backspace điều hướng trở lại trong javascript?

<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 để giúp tôi nhận ra rằng "điều hướng không gian trở lại" hoạt động trên phím tắt và không phải khóa . Tôi luôn nghĩ rằng tôi phải đánh nó một lần trên một trang mà tôi muốn quay trở lại, nhưng bây giờ tôi nhận ra rằng tôi có thể giữ nó xuống. – Mercurybullet

+0

Ồ, tôi đã cài đặt firebug và bây giờ mẫu này hoạt động trong firefox. Không biết tại sao. – hova

Trả lời

0

Bạn có thể muốn kiểm tra mã nguồn cho dự án từ this article. Ông đi vào chi tiết về cách ông đã phải đối mặt với phím backspace trong các trình duyệt khác nhau.

2

Điều đó phức tạp hơn tôi nghĩ. Tùy thuộc vào lý do bạn đang ngăn cản người sử dụng từ backspacing khỏi trang, một cái gì đó giống như this có thể làm việc cho bạn:

<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

Sử dụng jquery - chỉ chọn thả xuống

$(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;}}); 
} 

Đối với tất cả các yếu tố trong trang ngoại trừ kiểm soát đầu vào và textarea như sau

<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> 
Các vấn đề liên quan