2012-08-13 41 views
10

पर निकाला जा रहा है रिक्त स्थान मैं 10 की एक maxlength क्षेत्र ऑस्ट्रेलियाई फ़ोन नंबर (10 अंक) के लिए है के साथ एक इनपुट पाठ क्षेत्र की है। फ़ोन नंबरों में आम तौर पर निम्न सिंटैक्सजावास्क्रिप्ट - पेस्ट

12 12345678 

में विभाजित कर रहे हैं किसी प्रतियां ऊपर और चिपकाता है कि मेरे इनपुट क्षेत्र में, यह स्पष्ट रूप से पिछले अंक बाहर छोड़ देता है और अंतरिक्ष रहता है।

वहाँ ठीक पहले इसे इनपुट बॉक्स में चिपकाया जाता है किसी भी रिक्त स्थान को हटाने के लिए कोई तरीका है? या फिर एक और काम है?

अग्रिम धन्यवाद।

उत्तर

8

यह आप के लिए काम करना चाहिए:

एचटीएमएल

<input type="text" id="phone" maxlength="10" />​ 

जावास्क्रिप्ट

var phone = document.getElementById('phone'), 
    cleanPhoneNumber; 

cleanPhoneNumber= function(e) { 
    e.preventDefault(); 
    var pastedText = ''; 
    if (window.clipboardData && window.clipboardData.getData) { // IE 
     pastedText = window.clipboardData.getData('Text'); 
     } else if (e.clipboardData && e.clipboardData.getData) { 
     pastedText = e.clipboardData.getData('text/plain'); 
     } 
    this.value = pastedText.replace(/\D/g, ''); 
}; 

phone.onpaste = cleanPhoneNumber; 

फिडल: http://jsfiddle.net/y6TYp/6/

अद्यतन nnnnnn, ऑस्ट्रेलिया के फोन नंबरों के बारे में एक महान बिंदु था regex की जगह को अद्यतन करने।

+0

ब्रावो, ब्रावो, अच्छी तरह से किया गया। धन्यवाद; एक जादू की तरह काम करता है। – Matt

+2

आप ब्रांड्स और हाइफ़न भी हटा सकते हैं, क्योंकि ऑस्ट्रेलियाई फोन नंबर अक्सर '(02) 6543-210 9' पर कुछ भिन्नता के साथ लिखे जाते हैं। तो शायद '। जगह (/ \ डी/जी, '') '(यानी, खाली स्ट्रिंग वाले किसी भी गैर-अंक को प्रतिस्थापित करें)। – nnnnnn

+0

मैं एक क्रॉस ब्राउज़र समाधान भी ढूंढ रहा था। यह निश्चित रूप से क्रोम और आईई 9 में काम करता है। हालांकि, यह फ़ायरफ़ॉक्स में काम नहीं कर रहा है। एमडीएन पर, नोट्स अनुभाग में: "वर्तमान में चिपकने वाले पाठ को प्राप्त करने के लिए कोई डोम-केवल तरीका नहीं है; आपको उस जानकारी को प्राप्त करने के लिए एक एनएसआईसीएलबोर्ड का उपयोग करना होगा।" – JayC

1

इस समारोह आप यह कर मदद मिलेगी:

function removeSpaces(string) { 
return string.split(' ').join(''); 
} 

वैकल्पिक रूप से, jQuery का उपयोग कर, आप विधि यहाँ वर्णित का उपयोग कर सकते हैं: Delete white spaces in textbox when copy pasted with jquery

+0

उत्तर के लिए धन्यवाद । दुर्भाग्य से ये अधिकतम समाधान नहीं होने पर व्यवहार्य समाधान प्रतीत नहीं होते हैं। मैंने बनाए गए jsfiddle में निम्नलिखित "12 12345678" चिपकाने का प्रयास करें: http://jsfiddle.net/xNdDM/1/ – Matt

1

निकट कार्य आप वर्णित आप तो मैं क्या करना होगा निम्नलिखित सुनिश्चित करें कि आपके कोड के साथ या जावास्क्रिप्ट के बिना विभिन्न ब्राउज़रों में काम करता है बनाना चाहते:

  1. 11 के लिए maxlength सेट करें - maxlength एक HTML विशेषता है और आपको यह सुनिश्चित करने की ज़रूरत है कि जावास्क्रिप्ट के साथ या उसके बिना उपयोगकर्ता द्वारा दर्ज डेटा खो नहीं जाता है। यदि उपयोगकर्ता 11 अंकों में प्रवेश करता है और कोई जावास्क्रिप्ट नहीं है - तो आपको डेटा को कैप्चर करने और उसे सर्वर की ओर से साफ़ करने की आवश्यकता होगी। खैर, सर्वर साइड सत्यापन अनिवार्य है।

  2. तो जावास्क्रिप्ट है मैं jQuery समारोह का उपयोग maxlength स्थापित करने और यह सुनिश्चित करें कि रिक्त स्थान निकाल दिए जाते हैं करने के लिए होगा, इसलिए कहते हैं कि तुम आईडी = 'शीर्षक' के साथ एक क्षेत्र है: दस्तावेज़ तैयार आप निम्नलिखित कोड लिखने पर: ।।

    $ ('इनपुट # शीर्षक') attr ('maxLength', '10') कुंजी दबाने (limitMe);

    function limitMe(e) { 
        if (e.keyCode == 32) { return true; } 
        return this.value.length < $(this).attr("maxLength"); 
    } 
    

जाहिर है अगर आप सिर्फ एक ही वर्ग विशेषता के साथ इनपुट फ़ील्ड सभी को सजाने और उसके बाद तो जैसे सभी क्षेत्रों में इसे लागू कई क्षेत्रों है:

$('input.limited').attr('maxLength','10').keypress(limitMe);