问题描述
我正在尝试删除无效字符并将其转换为大写;
如果您在最新的Firefox for Android上运行代码,则将触发输入事件两次,并且输入值将重复。
但是,如果您删除了任何操作(toupperCase或替换),问题就会消失。
测试案例一(有问题)
var input = document.getElementById("a");
input.addEventListener("input",()=>{
//input.value = input.value.toupperCase();
//input.value = input.value.replace(/[^A-Z]/gi);
input.value = input.value.toupperCase().replace(/[^A-Z]/gi,'');
console.log("event");
});
<input id="a" type="text">
测试案例二(无问题)
var input = document.getElementById("a");
input.addEventListener("input",()=>{
//input.value = input.value.toupperCase();
input.value = input.value.replace(/[^A-Z]/gi,'');
//input.value = input.value.toupperCase().replace(/[^A-Z]/gi,'');
console.log("event");
});
<input id="a" type="text">
该行为是什么原因以及如何解决?
编辑:
萤幕撷取画面清晰。我输入了“ ABC”
编辑2:
看起来这段代码在Apple移动设备上引起了问题-单击键盘提示时,未使用这些提示。
临时的解决方案是在输入事件时使用过滤(替换),并使用大写字母-通过焦点输出或通过CSS(文本转换:大写字母)并在服务器上进行进一步的转换
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)