限制input輸入小數只能到3位或者只能輸入正整數(兼容ios)

我們在做表單輸入時,有時候對於有些輸入比較有限制,比如輸入天數必須爲正整數,再比如有些特殊需求需要輸入保留小數點的後面n位。那麼我們如何在輸入環節就限制用戶的輸入情況呢?

我們可以用正則表達式來限制。

限制input輸入數字只能輸入正整數(包括0)

<input type="number" class="weight-input" 
       oninput="this.value=this.value.replace(/\D/g,'');" 
       pattern="[0-9]*"> &nbsp; 天

解析

  1. oninput事件在用戶輸入時觸發,元素值發生變化時立即觸發。
  2. D爲非數字,this.value爲input輸入的值,當輸入的值不爲數字的時候,就替換成空字符串。
  3. 加上pattern="[0-9]*",是爲了適應蘋果ios系統。

限制input輸入數字只能輸入正整數(不包括0)

<input type="number" class="weight-input"  min="1"
  oninput="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/,'')}else{this.value=this.value.replace(/\D/g,'')}"  pattern="[1-9][0-9]*"> &nbsp; 天

解析

  1. min=1限制對於輸入是沒有用的,但是對於type="number"類型的上下點擊選擇還是有限制作用的,如果正則表達式寫的完善的話,min=1也可以不加。
  2. oninput是一個事件,所以事件裏面是可以寫js代碼的。

限制input輸入數字只能輸入小數點最多到第三位的數字

<input type="number" class="weight-input" min="0.000"  oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,3})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]{0,3}">
  1. /D(d)(.?)(d{0,3})d*/解析:加上括號即爲分組,分組從左到右分別用$1,$2,$3來表示,每個括號爲一組。只保留組裏面的內容,輸入的其他內容都給過濾掉。
  2. pattern="[0-9]*.?[0-9]{0,3}"是爲了適應蘋果ios系統
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章