问题:
该输入框仅可输入汉字、字母、数字
原方案:
<input id=“inputId” onkeyup=" this.value=this.value.replace('/[^\u4e00-u9fa5\da-zA-Z]/g', '') "/>
异常:
在输入中文时,对应的拼音也会填写到输入框中
分析:
中文状态下字母的输入也触发keyup事件,导致input输入框的值发生了改变
解决方案:
在中文输入时,input的输入框会触发compositionstart事件,选词结束后,触发compositionend事件。因此,忽略两个事件中间的输入即可。
//设置flag值来控制是否触发输入的过滤
var inputFlag = true;
$("#inputId").on('compositionstart', function(){
inputFlag = false;
});
$("#inputId").on('compositionend', function(){
inputFlag = true;
});
$("#inputId").on('input', function(){
if(inputFlag){
var text = $("#inputId").val();
text = text.replace('/[^\u4e00-u9fa5\da-zA-Z]/g', '');
$("#inputId").val(text);
}
});