Obecnie wyświetlam numery telefonów, takie jak 2124771000
. Jednak muszę liczbę być sformatowany w większej formie czytelnej dla człowieka, na przykład: 212-477-1000
. Oto mój obecny HTML
:
<p class="phone">2124771000</p>
javascript
jquery
Xtian
źródło
źródło
Odpowiedzi:
Proste: http://jsfiddle.net/Xxk3F/3/
$('.phone').text(function(i, text) { return text.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'); });
Lub: 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'); });
Uwaga: metody .text () nie można używać na elementach wejściowych. W przypadku tekstu pola wejściowego użyj metody .val ().
źródło
/(\d{3})?(\d{3})(\d{4})$/
na wypadek, gdyby nie było numeru kierunkowego$('#x_phone').on('keypress blur',function() { var ph = $(this).val(); var temp = ph.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'); $(this).val(temp); //alert(temp); });
var phone = '2124771000', formatted = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6,4)
źródło
Nie zapomnij upewnić się, że pracujesz wyłącznie z liczbami całkowitymi.
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; });
źródło
Oto kombinacja niektórych z tych odpowiedzi. Można to wykorzystać do pól wejściowych. Dotyczy numerów telefonów składających się z 7 i 10 cyfr.
// 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) }); }
Przykład na żywo: JSFiddle
Wiem, że to nie odpowiada bezpośrednio na pytanie, ale kiedy szukałem odpowiedzi, była to jedna z pierwszych stron, które znalazłem. Więc ta odpowiedź jest dla każdego, kto szuka czegoś podobnego do tego, czego szukałem.
źródło
Użyj biblioteki do obsługi numeru telefonu. Libphonenumber od Google to najlepszy wybór.
// 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
Polecam skorzystać z tego pakietu przez seegno.
źródło
Udostępniłem łącze jsfiddle, aby sformatować numery telefonów w USA jako (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(''); } });
Przykład na żywo: JSFiddle
źródło
spróbuj czegoś takiego ...
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 } } });
źródło
Rozważ libphonenumber-js ( https://github.com/halt-hammerzeit/libphonenumber-js ), który jest mniejszą wersją pełnego i słynnego libphonenumber.
Szybki i brudny przykład:
$(".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); } });
(Jeśli używasz wyrażenia regularnego, aby uniknąć pobierania biblioteki, unikaj ponownego formatowania za pomocą klawisza Backspace / delete ułatwi poprawianie literówek).
źródło
Alternatywne rozwiązanie:
function numberWithSpaces(value, pattern) { var i = 0, phone = value.toString(); return pattern.replace(/#/g, _ => phone[i++]); } console.log(numberWithSpaces('2124771000', '###-###-####'));
źródło
Znalazłem to pytanie, szukając sposobu na automatyczne formatowanie numerów telefonów za pomocą wtyczki jQuery. Przyjęta odpowiedź nie była idealna dla moich potrzeb i wiele wydarzyło się w ciągu 6 lat od jej opublikowania. W końcu znalazłem rozwiązanie i dokumentuję je tutaj dla potomności.
Problem
Chciałbym, aby pole wejściowe html mojego numeru telefonu automatycznie formatowało (maskowało) wartość w miarę wpisywania przez użytkownika.
Rozwiązanie
Sprawdź Cleave.js . Jest to bardzo skuteczny / elastyczny i łatwy sposób rozwiązania tego problemu i wielu innych problemów związanych z maskowaniem danych.
Formatowanie numeru telefonu jest tak proste, jak:
var cleave = new Cleave('.input-element', { phone: true, phoneRegionCode: 'US' });
źródło
Wejście:
4546644645
Kod:
PhoneNumber = Input.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, "($1)$2-$3");
Wynik:
(454)664-4645
źródło
Szybkie wprowadzenie własnego kodu:
Oto rozwiązanie zmodyfikowane z powyższego rozwiązania Cruz Nunez .
// 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{0,3})(\d{0,3})/, "($1) $2"); } else if (number.length <= 10) { number = number.replace(/(\d{3})(\d{3})(\d{1,4})/, "($1) $2-$3"); } else { // ignore additional digits number = number.replace(/(\d{3})(\d{1,3})(\d{1,4})(\d.*)/, "($1) $2-$3"); } $(this).val(number) }); }; $(phoneFormatter);
JSFiddle
W tym rozwiązaniu formatowanie jest stosowane bez względu na to, ile cyfr wprowadził użytkownik. (W rozwiązaniu Nunes formatowanie jest stosowane tylko wtedy, gdy wprowadzono dokładnie 7 lub 10 cyfr).
Wymaga wprowadzenia kodu pocztowego w przypadku 10-cyfrowego numeru telefonu w USA.
Oba rozwiązania są jednak problematyczne, ponieważ wprowadzane cyfry zawsze są dodawane na końcu.
Zamiast tego polecam solidny kod wtyczki jQuery Mask, wspomniany poniżej:
Polecam wtyczkę jQuery Mask
Polecam użycie wtyczki jQuery Mask (strona zawiera przykłady na żywo) na github .
Te linki zawierają minimalne wyjaśnienia, jak używać:
CDN
Zamiast instalować / hostować kod, możesz również dodać link do CDN skryptu CDN Link do wtyczki jQuery Mask
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js" integrity="sha512-pHVGpX7F/27yZ0ISY+VVjyULApbDlD0/X0rgGbTqCE7WFW5MezNTWG/dnhtbBuICzsd0WQPgpE4REBLv+UqChw==" crossorigin="anonymous"></script>
lub
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.js" integrity="sha512-pHVGpX7F/27yZ0ISY+VVjyULApbDlD0/X0rgGbTqCE7WFW5MezNTWG/dnhtbBuICzsd0WQPgpE4REBLv+UqChw==" crossorigin="anonymous"></script>
Formularz kontaktowy WordPress 7: użyj wtyczki Masks Form Fields
Jeśli korzystasz z wtyczki Formularz kontaktowy 7 w witrynie WordPress, najłatwiejszą opcją kontrolowania pól formularza jest dodanie klasy do pola wejściowego, aby zająć się tym za Ciebie.
Wtyczka Masks Form Fields jest jedną z opcji, która to ułatwia.
Podoba mi się ta opcja, ponieważ wewnętrznie osadza zminimalizowaną wersję kodu z wtyczki jQuery Mask wspomnianej powyżej.
Przykładowe użycie w formularzu kontaktowym 7:
<label> Your Phone Number (required) [tel* customer-phone class:phone_us minlength:14 placeholder "(555) 555-5555"] </label>
Ważna część tutaj jest
class:phone_us
.Zauważ, że jeśli używasz
minlength
/maxlength
, długość musi zawierać oprócz cyfr znaki maski.źródło
$(".phoneString").text(function(i, text) { text = text.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3"); return text; });
Wyjście :-( 123) 657-8963
źródło
Poniższy program obsługi zdarzeń powinien wykonać niezbędne czynności:
$('[name=mobilePhone]').on('keyup', function(e){ var enteredNumberStr=this.$('[name=mobilePhone]').val(), //Filter only numbers from the input cleanedStr = (enteredNumberStr).replace(/\D/g, ''), inputLength=cleanedStr.length, formattedNumber=cleanedStr; if(inputLength>3 && inputLength<7) { formattedNumber= cleanedStr.substr(0,3) + '-' + cleanedStr.substr(3,inputLength-1) ; }else if (inputLength>=7 && inputLength<10) { formattedNumber= cleanedStr.substr(0,3) + '-' + cleanedStr.substr(3,3) + '-' + cleanedStr.substr(6,inputLength-1); }else if(inputLength>=10) { formattedNumber= cleanedStr.substr(0,3) + '-' + cleanedStr.substr(3,3) + '-' + cleanedStr.substr(6,inputLength-1); } console.log(formattedNumber); this.$('[name=mobilePhone]').val(formattedNumber); });
źródło
Aby rozszerzyć kod Cruz Nunez i dodać ciągłe formatowanie, a także kilka międzynarodowych formatów numerów telefonów.
$('#phone').on('input', function() { var number = $(this).val().replace(/[^\d]/g, ''); if (number.length == 3) { number = number.replace(/(\d{3})/, "$1-"); } else if (number.length == 4) { number = number.replace(/(\d{3})(\d{1})/, "$1-$2"); } else if (number.length == 5) { number = number.replace(/(\d{3})(\d{2})/, "$1-$2"); } else if (number.length == 6) { number = number.replace(/(\d{3})(\d{3})/, "$1-$2-"); } else if (number.length == 7) { number = number.replace(/(\d{3})(\d{3})(\d{1})/, "$1-$2-$3"); } else if (number.length == 8) { number = number.replace(/(\d{4})(\d{4})/, "$1-$2"); } else if (number.length == 9) { number = number.replace(/(\d{3})(\d{3})(\d{3})/, "$1-$2-$3"); } else if (number.length == 10) { number = number.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3"); } else if (number.length == 11) { number = number.replace(/(\d{1})(\d{3})(\d{3})(\d{4})/, "$1-$2-$3-$4"); } else if (number.length == 12) { number = number.replace(/(\d{2})(\d{3})(\d{3})(\d{4})/, "$1-$2-$3-$4"); } $(this).val(number); });
źródło
może to pomoże
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('');
otrzymasz + 91-123-456-7890
źródło