2015-07-01 12 views
5

मैं बैकस्पेस बटन को हर ब्राउज़र में एक पेज वापस जाने के लिए रोकने की कोशिश कर रहा हूं। अभी के लिए मैं इस कोड का उपयोग कर रहा:jquery select dropdown खोले जाने पर कीडाउन घटना को अनदेखा करता है?

$(document).on("keydown", function (e) { 
    if (e.which === 8 && !$(e.target).is("input, textarea")) { 
     e.preventDefault(); 
    } 
}); 

यह है जब एक का चयन क्षेत्र ड्रॉपडाउन सूची खोला है के अलावा सब कुछ के लिए ठीक काम करता है, इस घटना को नजरअंदाज कर दिया है और एक बैकस्पेस मुझे वापस वैसे भी एक पृष्ठ लेता है। इस समस्या का समाधान किस प्रकार से किया जा सकता है? आपके उत्तरों के लिए धन्यवाद। ,

$(document).on("keydown", function (e) { 
    if (e.which === 8 && !$(e.target).is("input, textarea, select")) { 
     e.preventDefault(); 
    } 
}); 

उत्तर

2
बस जानकारी के लिए

के लिए यह कर देगा, इस के बाद से अपने कोड IE और एफएफ में ठीक काम करता है गूगल क्रोम विशिष्ट है।

यदि आपको वास्तव में काम करने की आवश्यकता है तो आप नकली ड्रॉपडाउन प्रस्तुत कर सकते हैं और सेट प्रोग्रामेटिक रूप से सेट कर सकते हैं।

आप के रूप में यह खुला था, कुछ इस तरह प्रकट करने के लिए ड्रॉप डाउन का आकार बदल सकते हैं: https://jsfiddle.net/yzr2cmqv/

<div clas="select-wrap"> 
    <div class="fake-select"></div> 
    <select class="select"> 
     <option value="1">one</option> 
     <option value="2">two</option> 
     <option value="3">three</option> 
    </select> 
</div> 

$(".fake-select").on("click", function() { 
    var numOfOpen = $("select.select option").size(); 
    $(".select").attr("size", numOfOpen).css("overflow", "hidden"); 
    $(this).hide(); 
}); 

$(".select").on("click", function() { 
    $(".select").attr("size", 1); 
    $(".fake-select").show(); 
}); 

उसके अलावा मुझे नहीं लगता कि आप कुछ भी के बाद से क्रोम घटनाओं जब सक्रिय हो रहे हैं क्या कर सकते हैं ड्रॉपडाउन खुला है।

+1

ऐसा लगता है कि यह क्रोम में एक बग है। मैंने इसकी सूचना दी है। आपके सहयोग के लिए धन्यवाद। – Silko

+0

'आकार' को बदलने के लिए कूल तकनीक हालांकि दुर्भाग्य से कीबोर्ड नेविगेशन तोड़ती है ... –

+1

आप उसी तर्क को पुन: उत्पन्न करने के लिए कुंजी अप/डाउन पर अतिरिक्त ईवेंट कार्यान्वित कर सकते हैं, इस फीडल की तरह somethink: https://jsfiddle.net/yzr2cmqv/15 / – Shark4109

-2

बस अपने चयनकर्ता के select टैग को जोड़ने ध्यान दें कि चुनिंदा ड्रॉपडाउन सक्रिय होने पर आप कुंजीपटल ईवेंट नहीं प्राप्त करेंगे और अपने कीबोर्ड दबाएंगे।

यह आपके

$(document).on("keydown", $('select'), function (e) { 
    if (e.which === 8) { 
     e.preventDefault(); 
    } 
}); 
+0

आप मेरी qustion समझ में नहीं आया। आपने जो किया वह बदतर हो गया। चयन में डिफ़ॉल्ट घटना पृष्ठ वापस है और यदि मैं इसे कहां जोड़ता हूं, तो यह ड्रॉपडाउन बंद होने के साथ भी काम नहीं करेगा। – Silko

-2

आप अभी $ (चुनें) पर keydown घटना के लिए जाँच करने के लिए होगा अगर तुम

console.log(e.which) 
console.log(e.target) 
आप करेंगे

जोड़ें:

+1

हम्म, मैंने देखा कि मेरा कोड केवल तभी काम करता है जब चयन सक्रिय है, जबकि यह केंद्रित है लेकिन इसे बंद करने की आवश्यकता है। मुझे एहसास हुआ कि यह काम नहीं करता है जबकि चयन खोला जाता है .. –

+0

मैंने पहले ही कोशिश की है। यह मदद नहीं करता है। जैसा कि मैंने कहा था कि ड्रॉपडाउन बंद होने पर मेरा कोड चुनने के लिए काम करता है। समस्या तब होती है जब एक ड्रॉपडाउन खोला जाता है। और वही समस्या आपके सुझाव में है। – Silko

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