2012-12-05 21 views
6

मुझे यह पता लगाने का कोई तरीका ढूंढना होगा कि कोई स्थान हटाया गया था या बैकस्पेस्ड किया गया था, और यदि ऐसा है तो फ़ंक्शन चलाएं। मैं इस पर जावास्क्रिप्ट/jQuery में काम कर रहा हूँ।यह पता लगाने के लिए कि एक स्पेस बैकस्पेस्ड या हटाया गया था

मैं जानता हूँ कि मैं का उपयोग करके delete या backspace कुंजी प्रेस प्राप्त कर सकते हैं:

$(this).keyup(function(event) { 
     event.keyCode 

हालांकि, मैं नहीं जानता कि कैसे delete या backspace आदेश एक अंतरिक्ष हटा दिया है, तो बताने के लिए?

किसी भी सुझाव के लिए बहुत सराहनात्मक।

+0

जब आप एक बैकस्पेस या हटाएं कुंजी दबाया आप अपने इनपुट तत्व में कैरट की वर्तमान स्थिति की जाँच करें और/चेक अगर इससे पहले कि यह एक अंतरिक्ष कि होगा है के बाद पता लगा है हटा दिया जाना चाहिए? – koopajah

+0

क्या आपको केवल स्पेस का पता लगाने की आवश्यकता है या इसे टेक्स्ट के साथ मिश्रित किया जा सकता है? – dmi3y

+0

@ dmi3y मुझे केवल एक स्थान हटाए जाने की आवश्यकता है। मेरे पास कुछ और है जो एकाधिक चरित्र हटाने को संभालता है। – Baxter

उत्तर

2

यहाँ देखें: http://jsfiddle.net/Txseh/

(function(){ 
    var currentWhitespaceCount; 

    $("input").keyup(function(e){ 
     var newCount = ($(this).val().match(/\s/g) || []).length; 

     if (newCount < currentWhitespaceCount) 
      alert("You removed one or more spaces, fool."); 

     currentWhitespaceCount = newCount; 
    }); 
})();​ 

यह इनपुट में खाली स्थान के पात्रों की वर्तमान संख्या को ट्रैक करता है, और कभी नंबर नीचे चला जाता है, तो यह अलर्ट (या जो भी आप चाहते हैं करता है)।

+0

लागू करने और पूरी तरह से काम करने के लिए सरल, धन्यवाद! – Baxter

+0

यह कोई काम नहीं करता है ... क्रोम, फ़ायरफ़ॉक्स, सफारी कोशिश की ... – suMi

2

कीडाउन से बांधें और यह देखने के लिए पहले और बाद में मूल्य की तुलना करें कि यह आकार में कम हो गया है या नहीं।

$(input).keydown(function(){ 
    var currVal = this.value, self = this; 
    setTimeout(function(){ 
     if (currVal.length > self.value.length) { 
      console.log(currVal.length - self.value.length + " characters have been removed."); 
     } 
    },0); 
}); 

http://jsfiddle.net/ymhjA/1/

अपडेट किया गया नमूना:

$("input").keydown(function() { 
    var currVal = this.value, 
     self = this; 
    setTimeout(function() { 
     if (currVal.length - self.value.length === 1) { 
      var origVal = $.grep(currVal.split(""),function(val){ 
       return val === " "; 
      }); 
      var newVal = $.grep(self.value.split(""),function(val){ 
       return val === " "; 
      }); 
      if (origVal.length != newVal.length) { 
       console.log("a space was removed"); 
      } 
     } 
    }, 0); 
});​ 

http://jsfiddle.net/ymhjA/4/

+0

यह ओपी के सवाल का जवाब नहीं देता है। – Shmiddty

+0

@Shmiddty: हाँ ऐसा करता है, क्योंकि किसी भी विधि के माध्यम से किसी भी स्थान को हटाने से यहां दिखाई देगा। –

+0

यह निर्धारित करने के लिए यहां कुछ भी नहीं है कि कोई स्थान हटा दिया गया है या नहीं। यह आपको बताता है कि किसी भी चरित्र को हटा दिया गया है। – Shmiddty

2

कैश मूल्य पहले से (कुंजी दबाने पर कोई मान सेट) और कुंजी दबाने के बाद मूल्य के साथ तुलना करें। यह सुनिश्चित करने का एकमात्र तरीका है कि एक या अधिक रिक्त स्थान हटा दिए गए हैं। चाबियों की कोई भी जांच इस बात पर निर्भर करती है कि आप एक अंतरिक्ष को हटाने के लिए कौन सी संभावित कुंजी प्राप्त कर सकते हैं, और संभावित रूप से छेद छोड़ देंगे।

उदाहरण के तौर पर, एक शब्द के अंतिम अक्षर और उसके बाद की जगह का चयन करते हुए, यदि हम अंतिम अक्षर दबाते हैं तो यह स्थान हटा देगा। लेकिन दबाया कुंजी कुंजी बैकस्पेस या हटा नहीं है।

+0

यह ठीक है, हर दूसरे चरित्र keyup() पर फ़ंक्शन को कॉल करता है। मैं बैकस्पेस का इलाज करना चाहता हूं और अलग-अलग हटा देना चाहता हूं और केवल हटाएं या बैकस्पेस को किसी स्थान को हटा दें, अन्यथा मैं उन आदेशों को अनदेखा करना चाहता हूं। – Baxter

+0

क्या आप उदाहरण दे सकते हैं कि मैं पहले से कैश कैश कर सकता हूं और कीप्रेस के बाद मूल्य के साथ तुलना कर सकता हूं? – Baxter

+1

@ बैक्सटर यह ठीक है कि मेरा कोड क्या करता है। –

1

वास्तव में यहाँ मेरी कोड http://jsbin.com/atuwez/3/edit

var input = $('#input'), 
    afterLength, 
    beforeLength; 

input.on({ 
    'keydown': function() { 
    beforeLength = input.val().split(/\s/).length; 
    }, 
    'keyup': function(event) { 
    var key = event.keyCode || event.charCode; 

    if(key == 8 || key == 46) { 
      afterLength = input.val().split(/\s/).length; 
      console.log(beforeLength == afterLength); 
    } 
    } 

});