1. 程式人生 > >關於在input標籤中輸入數字的問題(正則表示式)

關於在input標籤中輸入數字的問題(正則表示式)

在專案開發中遇到文字框限制輸入內容的問題,自己在網上找了找,又加了點自己的,簡略寫出了幾個,在這寫一下,希望對其他人有所幫助。

可在input標籤中根據情況加入屬性:

情況1:需要只能輸入數字:

onkeyup='this.value=this.value.replace(/\D/gi,"")'

情況2:需要只能輸入小數(牽扯到金額等):

onkeyup="this.value=(this.value.match(/\d+(\.\d{0,2})?/)||[''])[0]" 【正則限定必須先輸入數字,而後能且只能輸入一個小數點,小數點後可輸入兩位數字,需要的可以更改大括號中的數字2,這個數字用來限定小數點後可以有多少位數字】

情況3:需要只能輸入正負整數和0(牽扯到樓宇樓層的問題):

onkeyup="this.value=(this.value.match(/(\-{0,1}\d{0,8})?/)||[''])[0]" 【正則限定文字框內只能在開頭輸入或不輸入一個符號,後面可跟8位數字,需要的可以更改大括號中的數字8】

備註:使用這個方法有可能會在谷歌瀏覽器中會導致無法使用鍵盤來控制滑鼠左右移動。解決方法為:將onkeyup中的內容寫到一個js方法當中,然後在onkeyup屬性中呼叫js方法。【這個解決方法是我在網上一個大神那找來的,特此說明一下,謝謝大神了】

<input type="text" onkeyup="cky(this)">

function cky(obj){
    var t = (obj.value.match(/\d+(\.\d{0,2})?/)||[''])[0];
    if(obj.value!=t)
        obj.value=t;
}