2016-07-29 48 views
0

我有一個數字文本框,默認情況下,數字文本框允許指數和句點。 我如何限制?在數字文本框中限制指數和句點(。)html

我能想到的方法之一是在輸入事件上使用string.replace,但它不能按預期工作。下面是我的代碼..

HTML

 <input type='number' class='number'> 

的JavaScript

 $(".number").on('input', function() { 
      this.value = this.value.replace(/e|E|\./g, ''); // Remove e, E, and period(.) 
      if (this.value.length > 4) { 
       this.value = this.value.slice(0, 4); 
      } 
     }); 

當我進入文本字符串 '2E',整個輸入是越來越如果上面的代碼運行刪除。我只是想從輸入字符串中刪除e,E或句點而不是整個輸入。

有沒有辦法做到這一點。

JSfiddle

回答nichel工作就像一個魅力,我現在的問題是如何限制在paste事件一樣?

回答

0

所以基本上你只想讓數字?然後,通過鍵碼&限制鍵刪除上粘貼

$(".number").keypress(function(e){ 
    return e.keyCode>47&&e.keyCode<58; 
}).paste(function(){ 
    $(this).val($(this).val().replace(/\D/g,'')); 
}) 

多餘的字符既然你想最大長度爲4,只需添加max="9999"

<input type='number' class='number' max="9999"> 
+0

_since你想最大長度爲5_1 OP想** 4 ** – Tushar

+0

@Tushar哦,我注意到'.slice(0,4)'並錯誤地思考。確實。 – nicael

0

input[type=number]回報""(空字符串)如果輸入值無效。

您可以參考this的帖子瞭解更多信息。

我建議您使用input[type=tel]來代替。它也有一個maxLength屬性,所以你不必擔心修剪額外的值。

你甚至可以將你的正則表達式替換爲/[^0-9]/。這將取代除數字以外的所有字符。

Sample Fiddle

所以,你最終的代碼看起來像:JSFiddle