2010-12-11 13 views
19

jquery keypress event का उपयोग कर बैकस्पेस का पता क्यों नहीं लगाया जा रहा है?jquery keypress event का उपयोग कर बैकस्पेस का पता क्यों नहीं लगाया जा रहा है?

$("#field").keypress(function(event){alert(event.which);}); 
+0

यह एफएफ में मेरे लिए ठीक काम करता है, लेकिन IE में (8) नहीं। आप कौन सा ब्राउज़र उपयोग कर रहे हैं? –

उत्तर

19

"कुंजी दबाने" घटना (अपने मूल आईई रूप में, और सफारी/क्रोम में) है एक वास्तविक चरित्र के बारे में एक पाठ क्षेत्र में जोड़ा जा रहा। बैकस्पेस कुंजी स्पष्ट रूप से फ़ील्ड मान में एक नया वर्ण नहीं जोड़ती है, इसलिए यह कोई कीप्रेस ईवेंट नहीं देती है।

फ़ायरफ़ॉक्स और ओपेरा टाइपिंग ईवेंट उत्पन्न करने के बारे में थोड़ा अधिक विचित्र हैं।

पीपीके (quirksmode) considers the IE and Webkit behaviors to be the sensible ones, और मैं काफी सहमत हूं।

+0

यह समझदार हो सकता है, लेकिन यह घटना आईएमओ की उपयोगिता को कम करता है। हो सकता है कि यह सिर्फ आदत है, लेकिन मैं अक्सर कीप्रेस का उपयोग करता हूं (अन्य भाषाओं में, जहां दबाया जाता है यदि दबाए गए कुंजी में एएससीआईआई मान होता है) बीएस कुंजी को अक्षम बटन जैसे चीजों को करने के लिए जाल करते हैं जब उपयोगकर्ता इनपुट बॉक्स से सभी टेक्स्ट का बैक लेता है । – BobRodes

19

आईई के बजाय keydown और keyup फ़ंक्शंस का उपयोग करने का प्रयास करें।

Javascript e.keyCode doesn't catch Backspace/Del in IE

+2

बिल्कुल यह http://jsfiddle.net/EZqMA/ –

+0

देखें यह वास्तव में एक अच्छी साइट है, एरिक। मैंने आज कुछ सीखा। – mdarwi

+1

@Eric IMO कुंजी 'कुंजीअप' ईवेंट का उपयोग करने के लिए बेहतर है क्योंकि यह कुंजी जारी होने के बाद होता है और '.value' नया मान वापस कर देगा। –

0

onkeyup अकेले क्रोम में सभी कुंजीपटल कुंजी का पता लगाने क्या करेंगे ..

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