2013-03-12 8 views
7

Im mit jquery maskierte Input Plugins und braucht ein Telefonfeld mit folgendem Format haben:jquery maskierte Eingang hat nur die erste Nummer optional Rest obligatorisch

1 (222) - 000 - 1114 

mein Code sieht wie folgt aus:

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

jetzt kann ich nicht scheinen es zu arbeiten, um die erste Ziffer optional, aber der Rest obligatorisch zu machen. So sind die folgenden Zahlen sind gültig:

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

und die folgenden Zahlen sind ungültig

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

mit "9 (999) - 999- 9999?" wird, da es nicht funktionieren macht die ganze Sache optional

Wenn dies in masked getan werden kann, kann mir jemand mit regulärem Ausdruck helfen, dies zu erreichen?

+0

Ich würde zuerst prüfen, ob es 11 Stellen sind, und danach eine Maske in eine Funktion. –

Antwort

15

Versuchen Sie folgendes:

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

hat perfekt funktioniert, vielen Dank. Ein Problem, obwohl die erste Ziffer nicht streng digit ist, wenn ich Buchstaben schreibe es in Buchstaben eingibt – GGio

+1

noch erste Ziffer akzeptiert Buchstaben – GGio

+0

Dies ist keine gute Lösung. Dies behebt das Problem, wenn Sie mit der Eingabe beginnen. Aber wenn Sie die Daten aus der Datenbank wiederherstellen (zum Beispiel) und die Maske anwenden, sind Ihre Eingaben leer. – MarceloBarbosa

0

Es ist nicht perfekt, aber Sie können Nummer oder Leerzeichen verwenden:

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