2012-03-28 15 views
53

यह कैसे करें?"इनपुट" घटना पर बैकस्पेस और डेल का पता लगाएं?

मैंने कोशिश की:

var key = event.which || event.keyCode || event.charCode; 

if(key == 8) alert('backspace'); 

लेकिन यह काम नहीं करता ...

अगर मैं कुंजी दबाने घटना यह काम करता है पर एक ही है, लेकिन मैं क्योंकि यह कुंजी दबाने का उपयोग नहीं करना चाहते हैं मेरे इनपुट फ़ील्ड में टाइप किए गए चरित्र को आउटपुट करता है। मुझे लगता है कि


मेरे कोड को नियंत्रित करने में सक्षम होना चाहिए:

$('#content').bind('input', function(event){ 

    var text = $(this).val(), 
     key = event.which || event.keyCode || event.charCode; 

    if(key == 8){ 
     // here I want to ignore backspace and del 
    } 

    // here I'm doing my stuff 
    var new_text = 'bla bla'+text; 
    $(this).val(new_text); 
    }); 

कोई चरित्र मेरी इनपुट में संलग्न करना होगा, इसके अलावा मैं क्या वैल() वास्तव में से इनपुट के साथ जोड़ रहा उपयोगकर्ता को पूरी तरह से अनदेखा किया जाना चाहिए, केवल मेरे लिए महत्वपूर्ण दबाव कार्रवाई महत्वपूर्ण है

+2

आप वास्तव में or'ing क्या करने की जरूरत नहीं है - event.which ठीक है, jQuery आप के लिए घटना वस्तु को सामान्य। Http://api.jquery.com/category/events/event-object/ – Niko

+0

देखें, आपको ईवेंट का नाम '.bind' का पहला तर्क माना जाना चाहिए, चयनकर्ता नहीं। '$ (' Content ') होना चाहिए। बाइंड (' कीप्रेस ', ... ' – pmrotule

उत्तर

68

.onkeydown का उपयोग करें और return false; के साथ हटाने को रद्द करें। इस तरह:

var input = document.getElementById('myInput'); 

input.onkeydown = function() { 
    var key = event.keyCode || event.charCode; 

    if(key == 8 || key == 46) 
     return false; 
}; 

या jQuery के साथ, क्योंकि आप अपने प्रश्न के लिए एक jQuery टैग जोड़ा:

jQuery(function($) { 
    var input = $('#myInput'); 
    input.on('keydown', function() { 
    var key = event.keyCode || event.charCode; 

    if(key == 8 || key == 46) 
     return false; 
    }); 
}); 

+13

क्या होगा यदि आप राइट-क्लिक> पेस्ट से इनपुट पकड़ना चाहते हैं? – ctb

+2

' keydown'' क्रोम में काम नहीं करता है एंड्रॉइड, बैकस्पेस या डेल – Kosmetika

+1

पर क्लिक करते समय यह खालीता देता है फ़ंक्शन में हमें ईवेंट को पैरामीटर के रूप में रखना होगा, फिर यह केवल फ़ंक्शन (ईवेंट) ------------------- ------- var input = document.getElementById ('myInput'); input.onkeydown = function (event) { var key = event.keyCode || event.charCode; अगर (केई वाई == 8 || कुंजी == 46) झूठी वापसी; }; –

3

क्या आपने 'ऑनकीडाउन' का उपयोग करने का प्रयास किया है? यह वह घटना है जिसे आप ढूंढ रहे हैं।

यह इनपुट डालने से पहले संचालित होता है और आपको चार इनपुट रद्द करने की अनुमति देता है।

+0

लेकिन मैं इसे कैसे रद्द कर सकता हूं? क्योंकि मैं इनपुट पर वैल() का उपयोग कर रहा हूं और यह अभी भी टाइप किए गए चरित्र को जोड़ता है – Alex

+2

' event.preventDefault() '? – Niko

+0

आप jQuery का उपयोग करते समय किसी भी घटना को रद्द करने के लिए बस 'झूठी वापसी कर सकते हैं;' – iMoses

9
jQuery

event.which साथ

संपत्ति event.keyCode और event.charCode को सामान्यीकृत करती है। ईवेंट देखने के लिए अनुशंसा की जाती है। कीबोर्ड कुंजी इनपुट के लिए।

http://api.jquery.com/event.which/

jQuery('#input').on('keydown', function(e) { 
    if(e.which == 8 || e.which == 46) return false; 
}); 
+1

मैं लंबे समय से jQuery का उपयोग कर रहा हूं, लेकिन इसे नहीं देखा है। कुछ नया सीखना हमेशा अच्छा होता है। +1! – Sablefoste

1
$('div[contenteditable]').keydown(function(e) { 
// trap the return key being pressed 
if (e.keyCode === 13 || e.keyCode === 8) 
{ 
    return false; 
} 
}); 
+1

"एंटर" के लिए कुंजी कोड 13 –

+1

"बैकस्पेस" के लिए कुंजी कोड 8 –

0

event.key === "बैकस्पेस"

अधिक हाल ही में और अधिक स्वच्छ: event.key का उपयोग करें। कोई मनमाना संख्या कोड नहीं!

input.addEventListener('keydown', function(event) { 
    const key = event.key; // const {key} = event; ES6+ 
    if (key === "Backspace" || key === "Delete") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers

0

keydownevent.key === "Backspace" or "Delete"

अधिक हाल ही में और अधिक स्वच्छ साथ: event.key का उपयोग करें। कोई मनमाना संख्या कोड नहीं!

input.addEventListener('keydown', function(event) { 
    const key = event.key; // const {key} = event; ES6+ 
    if (key === "Backspace" || key === "Delete") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers

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