使用正則表示式限制輸入框只能輸入數字
正則表示式限制輸入框只能輸入數字
程式碼如下:
<input type="text" onkeyup="this.value=this.value.replace(/[^/d]/g,'') " onafterpaste="this.value=this.value.replace(/[^/d]/g,'') " name="f_order" value="1"/>
其中,onafterpaste防止使用者從其它地方複製內容貼上到輸入框
輸入框只能輸入字母和下橫線的正則表示式
<input onkeyup="this.value=this.value.replace(/[^_a-zA-Z]/g,'')" onpaste="this.value=this.value.replace(/[^_a-zA-Z]/g,'')">
輸入框只能輸入字母數字和下橫線的正則表示式
<input onkeyup="this.value=this.value.replace(/[^/w]/g,'')" onpaste="this.value=this.value.replace(/[^/w]/g,'')">
或
<input onkeyup="this.value=this.value.replace(/[/W]/g,'')" onpaste="this.value=this.value.replace(/[/W]/g,'')">
不過上面使用的是替換的方法,因為替換的執行需要一定的時間,所以就存在個漏洞。就是隻要你操作夠快,在替換執行前你就提交了表單
那上面的限制就失效了。
要想沒有上面的BUG,就得改下觸發事件。上面是onkeyup,需要改成onkeypress。程式碼如下
<input onkeypress="if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;" >
這裡使用的是ASCII碼,'0'的ASCII碼為48,'9'的ASCII碼為57。可以根據自己的需要修改條件。
這個沒有處理貼上事件,就是使用者可以貼上過來其它字元,只要把上面的onkeyup和onpaste事件加過來就可以了