2009-11-20 13 views
13

यह आईई में काम करता है, लेकिन मैं इसे ओपेरा या फ़ायरफ़ॉक्स में काम नहीं कर सकता। मैं बैकस्पेस को नेविगेट करने से रोकना चाहता हूं अगर केवल वर्तमान फोकस ड्रॉप ड्रॉपडाउन है।मैं बैकस्पेस को जावास्क्रिप्ट में वापस नेविगेट करने से कैसे रोक सकता हूं?

<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 इस प्रकार है मुझे यह समझने में मदद के लिए कि "बैकस्पेस नेविगेटिंग" कीडाउन पर काम करता है और कुंजीपटल नहीं । मैंने हमेशा सोचा था कि मुझे प्रति पृष्ठ एक बार मारा जाना था, मैं वापस जाना चाहता था, लेकिन अब मुझे एहसास हुआ कि मैं इसे पकड़ सकता हूं। – Mercurybullet

+0

ओह, मैंने फायरबग स्थापित किया और अब यह नमूना फ़ायरफ़ॉक्स में काम करता है। कोई विचार क्यों नहीं। – hova

उत्तर

1

ठीक है, कि ओपेरा घटना की जरूरत है onkeypress स्थिति में रद्द कर दिया पता चला है, ऑनकीडाउन नहीं

संदर्भ: http://jimblackler.net/blog/?p=20

+0

अच्छा अवलोकन। अच्छा काम – OptimusCrime

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

jQuery का उपयोग करना - केवल चुनिंदा लटकती

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

इनपुट नियंत्रण और पाठ क्षेत्र को छोड़कर पृष्ठ के सभी तत्वों के लिए के लिए है के रूप में

<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> 
संबंधित मुद्दे

 संबंधित मुद्दे