<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)">
沒有留言:
張貼留言