2013-04-02 12 views
8

से हटाए गए वर्ण प्राप्त करें मैं content editable div का उपयोग कर रहा हूं क्योंकि मैं टेक्स्ट क्षेत्र में उपयोगकर्ता द्वारा चुने गए इमोटिकॉन्स दिखाना चाहता हूं।सामग्री संपादन योग्य div

मुझे पता है कि क्या characterbackspace या delete बटन के साथ deleted है चाहता हूँ।

क्या jquery या javascript के साथ चरित्र को जानना संभव है?

अद्यतन

यह सभी डुप्लिकेट पर नहीं है के बाद से सभी जवाब कैसे एक दबाया कुंजी delected चरित्र के बारे में नहीं नज़र रखने के लिए के बारे में कर रहे हैं।

+0

@Blazemonger मुझे नहीं पता कि यह हासिल किया जा सकता है या नहीं? –

+0

आप बैकस्पेस बटन को आजमा सकते हैं और कैप्चर कर सकते हैं ... [http://stackoverflow.com/questions/4935655/how-to-trap-the-backspace-key-using-jquery](http://stackoverflow.com/ प्रश्न/4935655/कैसे-से-जाल-द-बैकस्पेस-कुंजी-उपयोग-jquery) – Joseph

+0

@ जोसेफ मैं केवल दबाए गए कुंजी को ट्रैक कर सकता था। लेकिन मैं हटाए गए चरित्र को कैसे प्राप्त करूं –

उत्तर

3

मेरे पास एक साफ समाधान नहीं है।

var lastText = $('#editable').text(); 
$('#editable').keyup(function(event){ 
    if (event.which==8 || event.which==46) { 
    var newText = $(this).text(); 
    for (var i=0; i<lastText.length-1; i++) { 
     if (lastText[i]!=newText[i]) { 
     console.log("char '" + lastText[i] + "' was removed at index "+i); 
     lastText = newText; 
     return; 
     } 
    } 
    } 
}); 

Demonstration

+0

यह ठीक है कि मैं सोच रहा था कि समस्या को मंजूरी देनी होगी। – Ryan

+0

यदि आप डेमो पर क्लिक करते हैं, और बैकस्पेस दबाएं अंतिम चरित्र, यह काम करता है - लेकिन यदि आप तब कोई टाइपि करते हैं दस्तावेज़ में कहीं भी, अगली बैकस्पेस गलत चरित्र की रिपोर्ट करेगी। – NibblyPig

+0

@ एसएलसी मुझे खेद है, लेकिन मैं आपकी समस्या का पुनरुत्पादन नहीं कर सकता। –

0

आप आप क्या चाहते करने के लिए preventDefault() फ़ंक्शन का उपयोग कर सकते हैं: लेकिन यह एक अगर आप बैकस्पेस कुंजी हिट यदि आपने निकाले गए चार को दर्शाता है।

यहाँ एक <textarea> का उपयोग कर एक उदाहरण है, लेकिन यह किसी भी तत्व का विस्तार करना चाहिए:

http://jsfiddle.net/4dThe/

$('#txtArea').keydown(function(e) { 

    if (e.which == 8) 
    { 
    var value = $(this).val(); 
    var lastchar = value.substring(value.length - 1); 

     alert("Last character is: " + lastchar); 
     $(this).val(value.substring(0, value.length - 1)); 
     e.preventDefault(); 
    } 

}); 

preventDefault() विधि ब्लॉक बैकस्पेस आपरेशन, इसलिए पिछले चरित्र को नहीं हटाया गया है। फिर आप देख सकते हैं कि आखिरी चरित्र क्या है, और बैकस्पेस ऑपरेशन स्वयं करें।

आपको सही चरित्र को हटाने के लिए वर्तमान कर्सर स्थिति का पता लगाने के लिए उपरोक्त उदाहरण को बदलने की आवश्यकता होगी, लेकिन यह एक शुरुआत है।

+2

और यदि हटाया गया चरित्र अंतिम नहीं है? –

+0

जैसा कि मैंने पिछले पैराग्राफ में कहा था, मैं सभी काम नहीं कर रहा हूं;) – NibblyPig

+2

गंभीरता से ... यहां केवल एक ही समस्या है * क्या * चरित्र हटा दिया गया है। –

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