<input type="text" name="aa" onkeyup="this.value=this.value.replace(/[^\d]/g,'')" />
方法二:
<script> function my_key(e){ var key; if(window.event) { key = e.keyCode; }else if(e.which) { key = e.which; } else { return true; } if(8==key || 46==key){//8:backspace 46:delete (倒退鍵和刪除鍵也允許作用) return true; } var keychar = String.fromCharCode(key); var reg = /\d/; return reg.test(keychar); } </script> <input type="text" name="bb" value="" onkeypress="return my_key(event)"> <input type="text" name="cc" value="" onkeydown="return my_key(event)">此方法可以選用onkeypress或onkeydown,兩者有一點不一樣,
例如:上、下、左、右,onkeydown才會偵測的到。(參考 JavaScript Madness: Keyboard Events)
方法三:
後來發現前面方法二,如果用右邊的數字鍵盤會怪怪的,
用onkeypress偵測「. Del」這個鍵,不管是不是「num lock」的code都同樣是「46」,
所以如果如果不想允許輸入「.」,便要另外想辦法判斷是否為「num lock」。
用onkeydown偵測數字鍵盤上的數字code,範圍為96~105,用String.fromCharCode轉換回來,變成不是數字。
所以另外修改了使用onkeydown且只能輸數0~9數字的方式。
<script> function my_key_down(e){ var key; if(window.event) { key = e.keyCode; }else if(e.which) { key = e.which; } else { return true; } if( (key>=48 && key<=57) || (key>=96 && key<=105) //數字鍵盤 || 8==key || 46==key || 37==key || 39==key //8:backspace 46:delete 37:左 39:右 (倒退鍵、刪除鍵、左、右鍵也允許作用) ){ return true; }else{ return false; } } </script> onkeydown:<input type="text" name="dd" value="" onkeydown="return my_key_down(event)">
※註:在Firefox上,用新注音輸入法,再按數字鍵盤,方法二、方法三似乎就沒用了。
所以為了最後選擇了同時使用onkeyup和onkeydown
<script> function my_key_down(e){ var key; //console.warn(e.keyCode); //console.warn(e.which); if(window.event) { key = e.keyCode; }else if(e.which) { key = e.which; } else { return true; } //console.log(key); if( (key>=48 && key<=57) || (key>=96 && key<=105) //數字鍵盤 || 8==key || 46==key || 37==key || 39==key //8:backspace 46:delete 37:左 39:右 (倒退鍵、刪除鍵、左、右鍵也允許作用) ){ return true; }else{ return false; } } //console.log(String.fromCharCode(229)); //console.log(String.fromCharCode(0)); </script> onkeyup:<input type="text" name="aa" onkeyup="this.value=this.value.replace(/[^\d]/g,'')"> <br> onkeydown:<input type="text" name="dd" value="" onkeydown="return my_key_down(event)"> <br> onkeyup+onkeydown:<input type="text" name="aa" onkeyup="this.value=this.value.replace(/[^\d]/g,'')" onkeydown="return my_key_down(event)">
沒有留言:
張貼留言