2013-03-12 8 views
7

Im jQuery maskowane wejściowy wtyczki i trzeba mieć pole telefonu w następującym formacie:jquery zamaskowane wejście mają tylko pierwszy numer opcjonalnego resztę obowiązkowego

1 (222) - 000 - 1114 

mój kod wygląda następująco:

$("#myPhone").mask("9 (999) - 999 - 9999"); 

teraz nie wydaje się, aby to działało, aby pierwsza cyfra była opcjonalna, ale reszta była obowiązkowa. Więc następujące numery są ważny:

1 (222) - 000 - 1114 
    (222) - 000 - 1114 

i następujące numery są nieważny

1 (222) - 000 - 11 
    (222) - 00 - 0011 

użyciu "9 (999) - 999- 9999?" nie będzie działać, ponieważ czyni wszystko opcjonalnym

Jeśli to nie może być zrobione w zamaskowanym, czy ktoś może mi pomóc z regularnym wyrażeniem, aby to osiągnąć?

+0

Chciałbym najpierw sprawdzić, czy istnieje 11 cyfr, a potem użyć maski w funkcja. –

Odpowiedz

15

Spróbuj tego:

$.mask.definitions['~'] = '([0-9])?'; 
$("#myPhone").mask("~(999) - 999 - 9999"); 
+0

działało idealnie, dziękuję za dużo. Jeden problem, chociaż pierwsza cyfra nie jest ściśle cyfrowa, jeśli piszę literę, którą wpisuję na literę – GGio

+1

nadal pierwsza cyfra przyjmuje litery – GGio

+0

To nie jest dobre rozwiązanie. Naprawia to problem, jeśli zaczniesz pisać na wejściu. Ale jeśli odzyskasz dane z bazy danych (na przykład) i zastosujesz maskę, twoje dane wejściowe będą puste. – MarceloBarbosa

0

To nie jest idealne, ale można użyć numeru lub spacje:

$.mask.definitions['~'] = '[0-9 ]'; 
$("#myPhone").mask("~(999) - 999 - 9999"); 
Powiązane problemy