最近在input搜索框中添加正则时发现,iOS原生键盘录入中文总是录入异常,安卓手机无异常,出现异常的写法:
html
maxlength="30"
onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')">
处理之后:
html
maxlength="30">
js
//实时录入时通过正则剔除特殊字符(只能输入中文数字字母空格),此方式可解决iOS原生键盘中文录入异常
var flag = false;
$('#inputId').on({
'compositionstart': function () {
flag = true;
},
'compositionend': function () {
flag = false;
if (!flag) {
document.getElementById("inputId").value = document.getElementById("inputId").value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g, '');
}
},
'input propertychange': function () {
if (!flag) {
document.getElementById("inputId").value = document.getElementById("inputId").value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g, '');
}
}
});
博客讨论了在iOS设备上使用HTML输入框时遇到的中文录入异常问题,主要表现为正则过滤导致的问题。解决方案是通过监听compositionstart和compositionend事件,配合inputpropertychange事件来实时处理输入内容,确保在iOS上正确过滤特殊字符,同时保持安卓设备的正常功能。这种方法解决了iOS原生键盘中文输入的不兼容性。
5700

被折叠的 条评论
为什么被折叠?



