jQuery

2012-01-06 2 views
81

के साथ एक फ़ोन नंबर को प्रारूपित करने के लिए मैं वर्तमान में 2124771000 जैसे फ़ोन नंबर प्रदर्शित कर रहा हूं। हालांकि, मुझे अधिक मानव-पठनीय रूप में प्रारूपित करने की संख्या की आवश्यकता है, उदाहरण के लिए: 212-477-1000। यहाँ मेरे वर्तमान HTML:jQuery

<p class="phone">2124771000</p> 
+1

बहुत देर हो चुकी जवाब , लेकिन केवल उन लोगों की सहायता के लिए जो इस पृष्ठ पर उतर रहे हैं यूआरएल: http://igorescobar.github.io/jQuery-Mask-Plugin/ – Senthil

+5

यह सुनिश्चित नहीं है कि मैं इस पर बंद स्थिति को समझूं। रचनात्मक नहीं है सही नहीं लगता है ...मुझे यह जानकारी बेहद उपयोगी और इस मुद्दे पर सीधा सहयोग मिला है जो मुझे यहां लाया। मैं इस तथ्य को नहीं चुनता कि यह बंद है, लेकिन बंद होने के लिए प्रदर्शित कारण –

+0

शायद प्रश्न संपादित किया गया था और इससे पहले कम वर्णनात्मक था ... यह एक पूरी तरह से वैध एसओ सवाल और मेरे जवाब, और बहुत सारे अपवॉट्स जैसा लगता है। –

उत्तर

190

सरल: http://jsfiddle.net/Xxk3F/3/

$('.phone').text(function(i, text) { 
    return text.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'); 
}); 

या: http://jsfiddle.net/Xxk3F/1/

$('.phone').text(function(i, text) { 
    return text.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, '$1-$2-$3'); 
}); 
+3

मैंने इनपुट फ़ील्ड के भीतर 'परिवर्तन' घटनाओं का समर्थन करने के लिए इसे संशोधित किया है। http://jsfiddle.net/gUsUK/ –

+2

रेगेक्स का थोड़ा और मजबूत (हालांकि इसे एक कस्टम प्रतिस्थापन फ़ंक्शन की आवश्यकता है) '/ (\ d {3})? (\ d {3}) (\ d { 4}) यदि कोई क्षेत्र कोड – RevanProdigalKnight

+0

है तो $/'क्या यह दुनिया भर में फोन नंबरों के लिए मान्य है? – user2601010

49
var phone = '2124771000', 
    formatted = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6,4) 
+6

@AndreasAL दोनों में काम करता है: क्योंकि रेगेक्स इंजन में भारी ओवरहेड होता है, खासकर किसी ऐसे चीज़ के लिए जहां इनपुट प्रारूप ज्ञात होता है और सरल स्ट्रिंग ऑपरेशंस FAR अधिक कुशल होते हैं। और निश्चित रूप से, नियम है कि किसी समस्या के लिए रेगेक्स का उपयोग करने से आपको दो समस्याएं मिलती हैं। –

+4

यह समाधान "212555IDEA" जैसे अक्षरों के साथ फ़ोन नंबरों को उचित रूप से प्रारूपित करता है। –

+0

यह विंडोज वातावरण में अच्छी तरह से काम कर रहा है लेकिन आईओएस डिवाइस में काम नहीं कर रहा है। क्या कोई विकल्प है जो दोनों प्लेटफॉर्म –

3

कुछ इस तरह की कोशिश ..

jQuery.validator.addMethod("phoneValidate", function(number, element) { 
    number = number.replace(/\s+/g, ""); 
    return this.optional(element) || number.length > 9 && 
     number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     phoneValidate: true 
    } 
    } 
}); 
11

यह सुनिश्चित करना न भूलें कि आप पूरी तरह से पूर्णांक के साथ काम कर रहे हैं।

var separator = '-'; 
$(".phone").text(function(i, DATA) { 
    DATA 
     .replace(/[^\d]/g, '') 
     .replace(/(\d{3})(\d{3})(\d{4})/, '$1' + separator + '$2' + separator + '$3'); 
    return DATA; 
}); 
+2

में बहुत अच्छा बिंदु, ध्यान देने योग्य मूल्य दोनों में काम करता है। –

3

यहां इनमें से कुछ उत्तरों का संयोजन है। इसका उपयोग इनपुट फ़ील्ड के लिए किया जा सकता है। फोन नंबरों के साथ सौदे जो 7 और 10 अंकों लंबे होते हैं।

// Used to format phone number 
function phoneFormatter() { 
    $('.phone').on('input', function() { 
    var number = $(this).val().replace(/[^\d]/g, '') 
    if (number.length == 7) { 
     number = number.replace(/(\d{3})(\d{4})/, "$1-$2"); 
    } else if (number.length == 10) { 
     number = number.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3"); 
    } 
    $(this).val(number) 
    }); 
} 

लाइव उदाहरण: JSFiddle

मैं जानता हूँ कि यह सीधे सवाल का जवाब नहीं है, लेकिन जब मैं जवाब ऊपर देख रहा था यह पहली पृष्ठों मैंने पाया से एक था। तो यह जवाब किसी के लिए खोज रहा था जो मैं खोज रहा था।

1

मैं तुम्हें के रूप में यूएस के फ़ोन नंबर फ़ॉर्मेट करने के लिए के लिए jsfiddle लिंक प्रदान की है (XXX) XXX-XXX

$('.class-name').on('keypress', function(e) { 
    var key = e.charCode || e.keyCode || 0; 
    var phone = $(this); 
    if (phone.val().length === 0) { 
    phone.val(phone.val() + '('); 
    } 
    // Auto-format- do not expose the mask as the user begins to type 
    if (key !== 8 && key !== 9) { 
    if (phone.val().length === 4) { 
     phone.val(phone.val() + ')'); 
    } 
    if (phone.val().length === 5) { 
     phone.val(phone.val() + ' '); 
    } 
    if (phone.val().length === 9) { 
     phone.val(phone.val() + '-'); 
    } 
    if (phone.val().length >= 14) { 
     phone.val(phone.val().slice(0, 13)); 
    } 
    } 

    // Allow numeric (and tab, backspace, delete) keys only 
    return (key == 8 || 
    key == 9 || 
    key == 46 || 
    (key >= 48 && key <= 57) || 
    (key >= 96 && key <= 105)); 
}) 

.on('focus', function() { 
    phone = $(this); 

    if (phone.val().length === 0) { 
    phone.val('('); 
    } else { 
    var val = phone.val(); 
    phone.val('').val(val); // Ensure cursor remains at the end 
    } 
}) 

.on('blur', function() { 
    $phone = $(this); 

    if ($phone.val() === '(') { 
    $phone.val(''); 
    } 
}); 

लाइव उदाहरण: JSFiddle

4

फोन नंबर को संभालने के लिए एक पुस्तकालय का उपयोग करें। Google द्वारा Libphonenumber आपकी सबसे अच्छी शर्त है।

// Require `PhoneNumberFormat`. 
var PNF = require('google-libphonenumber').PhoneNumberFormat; 

// Get an instance of `PhoneNumberUtil`. 
var phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance(); 

// Parse number with country code. 
var phoneNumber = phoneUtil.parse('202-456-1414', 'US'); 

// Print number in the international format. 
console.log(phoneUtil.format(phoneNumber, PNF.INTERNATIONAL)); 
// => +1 202-456-1414 

मैं seegno द्वारा इस package उपयोग करने के लिए सलाह देते हैं।

-2

इस में मदद मिलेगी

var countryCode = +91; 
var phone=1234567890; 
phone=phone.split('').reverse().join('');//0987654321 
var formatPhone=phone.substring(0,4)+'-';//0987- 
phone=phone.replace(phone.substring(0,4),'');//654321 
while(phone.length>0){ 
formatPhone=formatPhone+phone.substring(0,3)+'-'; 
phone=phone.replace(phone.substring(0,3),''); 
} 
formatPhone=countryCode+formatPhone.split('').reverse().join(''); 

आप मिल जाएगा + 91-123-456-7890

0

पर विचार हो सकता है libphonenumber-js (https://github.com/halt-hammerzeit/libphonenumber-js) पूर्ण और प्रसिद्ध libphonenumber का एक छोटा संस्करण है।

त्वरित और गंदे उदाहरण:

$(".phone-format").keyup(function() { 
// Don't reformat backspace/delete so correcting mistakes is easier 
if (event.keyCode != 46 && event.keyCode != 8) { 
    var val_old = $(this).val(); 
    var newString = new libphonenumber.asYouType('US').input(val_old); 
    $(this).focus().val('').val(newString); 
} 
}); 

(आप एक regex का उपयोग एक पुस्तकालय डाउनलोड से बचने के लिए, बैकस्पेस पर पुनः स्वरूपित से बचने/यह आसान लिखने की त्रुटियों को सही करने के कर देगा को नष्ट करते हैं।)