2016-08-23 74 views
2

我有一個問題。我有一個輸入字段,其類型是number,但它採取任何字母在Mozilla Firefox瀏覽器。它工作偉大的鉻,但不工作在Firefox。我需要它應該工作鉻和不採取任何字母表。我使用Mozila firefox版本48.0.I解釋我的代碼如下。輸入類型號碼不能在Firefox中工作

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

請幫幫我。

+0

對於沒有JavaScript的Firefox,這是不可能的。如果你錯了,並且鍵入任何非數字符號 - 字段,那麼該字段仍然有效,在這種情況下它不被驗證。 如果你需要例子,如何用JS做到這一點,讓我知道。 –

+0

默認情況下,Mac OS X中的Firefox 39不會阻止字母字符輸入,並且Firefox 42僅會驗證,但不會禁用字母鍵輸入。 推薦來源:http://caniuse.com/#feat=input-number(已知問題標籤) – Venkat

回答

1

我使用火狐也一樣,我有同樣的問題發展我輸入型數字輸入caracters和空格等... 我已經找到了標籤模式的解決方案=「[1- 9]「,但不幸的是它不適合我。在沒有任何結果的情況下進行無謂的搜索之後,我決定開發自己的功能。 反正即時通訊在這個例子採用了棱角分明2,它幾乎類似的JavaScript,這樣你就可以在任何情況下使用此代碼: 這裏是HTML:

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

下面是函數FilterInput:

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; 
     } 
    }; 

在這個功能我不得不讓數字,方向,刪除按鍵進入。