关于input禁用中文输入法的问题

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<body>
<input type="text" id="input">
<!-- <input type="tel"> -->
<script>
var input = document.getElementById('input');
input.onkeydown = function(e){ //检测键入的键的ASCLL码值
var event = e || window.event;
if(event.keyCode != 8 && (event.keyCode < 48 || event.keyCode > 57)){
return false;
}
else
return true; //中文输入法的兼容性问题 如何禁用中文输入法
}
var cpLock = false;//默认中文输入法关闭
//中文输入法开始时触发compositionstart事件
document.addEventListener('compositionstart',function(e){
cpLock = true;
});
//中文输入法结束时触发compositionend事件
document.addEventListener('compositionend',function(e){
cpLock = false;
});
input.oninput = function(){
if(cpLock){
//将input中的A~Z a~z都替换成空字符
this.value = this.value.replace(/[A-Za-z]/g,"");
}
}
</script>
</body>

注意点:1、oninput事件总是后于onkeydown执行

​ 2、compositionstart事件,非英文输入法开启时触发;

​ 3、compositionend事件,非英文输入法结束时触发;

× 请我吃糖~
打赏二维码