/ / Maska JavaScript dla numeru telefonu Brasil - javascript, jquery, sprawdzanie poprawności, maskedinput

Maska JavaScript dla numeru telefonu Brasil - javascript, jquery, validation, maskedinput

Obecnie używam jquery.maskedinput dla prawdziwych formatów maski, ale nie działa dla numerów telefonów.

W Brazylii mieliśmy wszystkie liczby wformat (99) 9999-9999. Ale ostatnio w kilku miastach telefony komórkowe używają (99) 99999-9999, podczas gdy ich normalne telefony i reszta kraju pozostają (99) 9999-9999.

jquery.wydaje się, że maskedinput nie obsługuje 2 formatów na tym samym wejściu, w których znak w środku ciągu może być obecny lub nie. Jak widzę w jego dokumentacji, mogłem mieć (99) 9999-9999 i (99) 9999-99999, ale myliłoby to użytkowników.

Czy istnieje jakaś inna wtyczka / struktura maski, która pozwala mi zweryfikować zarówno (99) 9999-9999, jak i (99) 99999-9999?

Edytuj: Stworzyłem pełny test przy użyciu rozwiązań harry i Dmitrii: http://jsfiddle.net/NSd6g/ $("#full").inputmask("(99)9999[9]-9999");

Poczekam jeszcze trochę, żeby zobaczyć, czy mogę znaleźćjeszcze lepsze rozwiązanie. Idealna nie wymagałaby czerwonej wiadomości, druga grupa miałaby domyślnie 4 cyfry. A jeśli trzecia grupa dostanie piątą cyfrę, dopiero druga grupa dostanie piątą przestrzeń, przesuwając pierwszą cyfrę trzeciej grupy na drugą grupa piąta. lol trochę trudno zrozumieć, przepraszam!

Odpowiedzi:

5 dla odpowiedzi № 1

Możesz to osiągnąć za pomocą jquery.inputmask tak prosty jak:

jQuery(function($) {
$("#test").inputmask("(99)9999[9]-9999");
});

Spróbuj tego próbny.

Aby pominąć część opcjonalną podczas wpisywania do wejścia, należy wpisać spację lub znak po części opcjonalnej w masce (w tym przypadku łącznik).


1 dla odpowiedzi nr 2

Z maską jQuery możesz mieć tylko opcjonalne znaki końcowe. Nie w środku na wejściu.

Moją sugestią byłoby mieć 3 pola wprowadzania, po jednym dla każdej części numeru z opcjonalnym znakiem na końcu środkowego wejścia. Następnie połącz dane wejściowe na przesyłce.

jak na przykład:

 (<input id="phone2" />)<input id="phone3" />-<input id="phone4" />

jQuery(function($){
$("#phone2").mask("99");
$("#phone3").mask("9999?9");
$("#phone4").mask("9999");
});

Zobacz skrzypce: http://jsfiddle.net/Rge83/1/

Aby uczynić go bardziej przyjaznym dla użytkownika, skrypt, aby przejść do następnego wejścia po wypełnieniu bieżącego, można dodać + css, aby wejścia wyglądały bardziej jak jeden.


1 dla odpowiedzi nr 3

Ja też jestem Brazylijczykiem.

W mojej pracy nie używamy znaku „-” w środku dla tych typów masek, więc nie ma zamieszania… ostatnia maska ​​będzie następująca: (99)99999999?9

Ostatecznemu użytkownikowi trochę trudniej jest zidentyfikować błędnie wpisany numer telefonu, ale działa.

Innym sposobem, jaki wiem, jest tworzenie wyrażenia regularnego w JS, a następnie używanie go z inną wtyczką, na przykład jQuery Validate.


0 dla odpowiedzi nr 4
//Configuração para celular com nono digito
$("#Seletor").focusout(function () {
var phone, element;
element = $(this);
element.unmask();
phone = element.val().replace(/D/g, "");
if (phone.length > 10) {
element.mask("(99) 99999-999?9");
} else {
element.mask("(99) 9999-9999?9");
}
}).trigger("focusout");

0 dla odpowiedzi № 5

Moja sugestia: „(99) [9] 9999-9999”