我們在做表單輸入時,有時候對於有些輸入比較有限制,比如輸入天數必須爲正整數,再比如有些特殊需求需要輸入保留小數點的後面n位。那麼我們如何在輸入環節就限制用戶的輸入情況呢?
我們可以用正則表達式來限制。
限制input輸入數字只能輸入正整數(包括0)
<input type="number" class="weight-input"
oninput="this.value=this.value.replace(/\D/g,'');"
pattern="[0-9]*"> 天
解析
- oninput事件在用戶輸入時觸發,元素值發生變化時立即觸發。
- D爲非數字,this.value爲input輸入的值,當輸入的值不爲數字的時候,就替換成空字符串。
- 加上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]*"> 天
解析
- min=1限制對於輸入是沒有用的,但是對於type="number"類型的上下點擊選擇還是有限制作用的,如果正則表達式寫的完善的話,min=1也可以不加。
- 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}">
- /D(d)(.?)(d{0,3})d*/解析:加上括號即爲分組,分組從左到右分別用$1,$2,$3來表示,每個括號爲一組。只保留組裏面的內容,輸入的其他內容都給過濾掉。
- pattern="[0-9]*.?[0-9]{0,3}"是爲了適應蘋果ios系統