2012-12-27 12 views
9

पर काम नहीं कर रहा है मुझे काम करने के लिए preventDefault() नहीं मिल रहा है।keyup event पर preventDefault()

पहले::

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     return false; 
    } 
}); 

दूसरा:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     evt.preventDefault(); 
    } 
}); 

तीसरा:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     evt.preventDefault(); 
     return false; 
    } 
}); 

केवल चेतावनी काम करता है

यहाँ कुछ अलग कोड विविधताओं मैंने कोशिश की है।
सबकुछ ओपेरा पर काम करता है, लेकिन क्रोम और आईई पर भी keydown और keypress की कोशिश की। keypress स्क्रिप्ट पर काम नहीं करता है। $('#thetext').keydown(function(evt){}); न तो यह काम करता है।
यहाँ पूरे कोड है: preventDefault फोन करने के लिए http://bbullett.tk/test/kakey.html

Key 192 = ` 

मैं बहुत देर हो चुकी keyup घटना को सुना जा रहा है कुछ पाठ या बजाय `

+1

कृपया अपना कोड इंडेंट करें ताकि यह पठनीय हो। धन्यवाद! कौन सी कुंजी '1 9 2' है?इस कुंजी दबाए जाने पर डिफ़ॉल्ट व्यवहार क्या होता है? –

+0

आप क्या करने की कोशिश कर रहे हैं? कुंजीपटल घटना को पूरा करने से क्या रोकेंगे? – Guffa

+0

मैं ' –

उत्तर

26

का प्रतीक सम्मिलित करने के लिए कोशिश कर रहा हूँ, keypress या keydown बजाय को सुनने की कोशिश ।

$('input[type=text], textarea').on('keydown', function(event){ 
    if (event.which == 192) { 
     console.log('192'); 
     event.preventDefault(); 
    } 
}); 

ध्यान दें कि jQuery which संपत्ति को सामान्य और यह पार ब्राउज़र है।

http://jsfiddle.net/763ys/

+0

कुछ भी नहीं बदला: एस –

+0

@BbullettOmsarashvili यह मेरे लिए काम करता है फ़ायरफ़ॉक्स। – undefined

+0

लेकिन क्रोम पर नहीं। –

5

.keyup() के लिए कोई डिफ़ॉल्ट व्यवहार नहीं है; यह कुंजी प्रेस के बाद आग लगती है जो डिफ़ॉल्ट व्यवहार को ट्रिगर करती है। .keydown() or का उपयोग करें .keypress() `इसके बजाय।

स्रोत:http://api.jquery.com/category/events/keyboard-events/

0

उदाहरण यहाँ http://jsfiddle.net/WGSvm/

काम करते हुए देखना सभी तीन उदाहरण आप

$(document).keyup(function (evt) { }); 

मैं बजाय विशेष div id का उपयोग कहेंगे का इस्तेमाल किया है में $(document).keyup(function (evt) { });

$("#DivIdName").keyup(function (evt) { });की तरहऔर onkeypress का सख्ती से उपयोग करें, क्योंकि यदि आप onkeyup का उपयोग करते हैं तो यह पहले से ही प्रिंटिंग का डिफ़ॉल्ट कार्य या जो कुछ भी है उसे निष्पादित कर चुका है।

2

आप JQuery का उपयोग कर रहे हैं, जो ब्राउज़र के बीच अंतर को सामान्य करता है, इसलिए आपको केवल evt.which संपत्ति की जांच करने की आवश्यकता है। JQuery दस्तावेज़ देखें: http://api.jquery.com/keyup/

जैसा कि अन्य ने कहा है - कुंजी की प्रसंस्करण को रोकने के लिए कीप बहुत देर हो चुकी है। इसके बजाए कीडाउन या कीप्रेस का प्रयोग करें। http://api.jquery.com/category/events/keyboard-events/

+0

हालांकि कोई एंड्रॉइड ब्राउज़र पर कीडाउन का उपयोग करने का कोई विचार है? कीडाउन और कीप्रेस बहुत उपयोगी नहीं हैं अगर वे सभी प्लेटफॉर्म पर काम नहीं करते हैं ... – JohnG

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