2016-08-23 8 views
2

Ich habe ein Problem.Ich habe ein Eingabefeld, welcher Typ ist number, aber es nimmt jedes Alphabet in Mozilla Firefox Browser.Ist funktioniert gut in Chrom, aber nicht in Firefox. Ich brauche es sollte Arbeit als Chrom und nimm kein Alphabet. Ich benutze Mozila Firefox Version 48.0.Ich erkläre meinen Code unten.Eingabetyp Nummer funktioniert nicht in Firefox

<input type="number" class="form-control oditek-form" ng-model="type" name="type" step="1" min="0" placeholder="Add Type"> 

Bitte helfen Sie mir.

+0

Für Firefox - ohne Javascript ist es nicht möglich. Immer noch funktioniert das Feld, wenn Sie falsch sind und irgendein Nicht-Ziffern-Symbol eingeben - Feld wird in diesem Fall nicht validiert. Wenn Sie ein Beispiel brauchen, wie man das mit JS macht, lassen Sie es mich wissen. –

+0

Firefox 39 in Mac OSX verhindert standardmäßig nicht die Eingabe von Alpha-Zeichen und Firefox 42 validiert nur, aber es deaktiviert die Eingabe von Alpha-Tasten nicht. Bezogen von: http://caniuse.com/#feat=input-number (Registerkarte Bekannte Probleme) – Venkat

Antwort

1

Auch ich bin mit Firefox, ich hatte das gleiche Problem meine Eingabetyp Anzahl der Entwicklung caracters und Räume usw. eingeben ... Ich habe die Lösung des Tags pattern = "gefunden [1- 9] ", aber leider hat es bei mir nicht funktioniert. Nach einer Suche ohne Ergebnis entschied ich mich, meine eigene Funktion zu entwickeln. ohnehin Winkel 2 in dieser Beispiele mit im, dessen Javascript fast ähnlich, so können Sie diesen Code in jedem Fall verwenden: hier ist die html:

<input class="form-control form-control-sm" id="qte" type="number" min="1" max="30" step="1" [(ngModel)]="numberVoucher" 
    (keypress)="FilterInput($event)" /> 

hier wird die Funktion filter:

FilterInput(event: any) { 
     let numberEntered = false; 
     if ((event.which >= 48 && event.which <= 57) || (event.which >= 37 && event.which <= 40)) { //input number entered or one of the 4 directtion up, down, left and right 
      //console.log('input number entered :' + event.which + ' ' + event.keyCode + ' ' + event.charCode); 
      numberEntered = true; 
     } 
     else { 
      //input command entered of delete, backspace or one of the 4 directtion up, down, left and right 
      if ((event.keyCode >= 37 && event.keyCode <= 40) || event.keyCode == 46 || event.which == 8) { 
       //console.log('input command entered :' + event.which + ' ' + event.keyCode + ' ' + event.charCode); 
      } 
      else { 
       //console.log('input not number entered :' + event.which + ' ' + event.keyCode + ' ' + event.charCode); 
       event.preventDefault(); 
      } 
     } 
     // input is not impty 
     if (this.validForm) { 
      // a number was typed 
      if (numberEntered) { 
       let newNumber = parseInt(this.numberVoucher + '' + String.fromCharCode(event.which)); 
       console.log('new number : ' + newNumber); 
       // checking the condition of max value 
       if ((newNumber <= 30 && newNumber >= 1) || Number.isNaN(newNumber)) { 
        console.log('valid number : ' + newNumber); 
       } 
       else { 
        console.log('max value will not be valid'); 
        event.preventDefault(); 
       } 
      } 
      // command of delete or backspace was types 
      if (event.keyCode == 46 || event.which == 8) { 
       if (this.numberVoucher >= 1 && this.numberVoucher <= 9) { 
        console.log('min value will not be valid'); 
        this.numberVoucher = 1; 
        //event.preventDefault(); 
        this.validForm = true; 
       } 
      } 
     } 
     // input is empty 
     else { 
      console.log('this.validForm = true'); 
      this.validForm = false; 
     } 
    }; 

In dieser Funktion musste ich einfach den Tastendruck von Zahlen, Richtung, Löschen eingeben lassen.

Verwandte Themen