2017-09-21 3 views
0

Ich möchte eine Handynummer mit Angular 4 validieren und keine anderen Zeichen als Ziffern mit bis zu 10 Ziffern akzeptieren.Angular 4 Mobilnummer Validierung

Unten ist mein Code,

<input type="text" formControlName="mobileNo" minlength=10 maxlength=10> 
+2

akzeptiert Es wäre hilfreich, wenn Sie enthalten, was Sie haben bisher probiert! –

+0

Ich habe dies innerhalb der Formulargruppe> 'mobileNo': [null, Validators.compose ([Validators.required, Validators.pattern (mobileNoPatternMatch)])], und das Muster ist const mobileNoPatternMatch =/^ [0-9] {10,10} $/ –

+0

Korrektur von Tippfehlern und Hinzufügen eines Tags, um die Frage zielgerichteter zu machen. – Sung

Antwort

3
<input type="text" (keypress)="keyPress($event)" minlength=10 maxlength=10> 


    keyPress(event: any) { 
    const pattern = /[0-9\+\-\ ]/; 

    let inputChar = String.fromCharCode(event.charCode); 
    if (event.keyCode != 8 && !pattern.test(inputChar)) { 
     event.preventDefault(); 
    } 
    } 
0

Die keyPress Ereignis jedoch für Chrom gearbeitet für Firefox funktioniert nicht. In Chrome Tasten drücken wie Backspace und Pfeiltasten Ereignisse werden standardmäßig ignoriert und führt nicht die Funktion jedoch in Firefox es läuft und diese nicht funktionieren. Ich habe eine kleine Linie if (event.charCode !== 0)

_keyPress(event: any) { 
    if (event.charCode !== 0) { 
     const pattern = /[0-9\+\-\ ]/; 
     const inputChar = String.fromCharCode(event.charCode); 

     if (!pattern.test(inputChar)) { 
     // invalid character, prevent input 
     event.preventDefault(); 
     } 
    } 
    } 
1

nur

Validatoren Muster hinzufügen
mobileNumber: new FormControl(null, [Validators.pattern("[0-9]{0-10}")]) 

und die Art wird Nummer sein, und es wird vermieden, alle Zeichen