iOS 手机浏览器在输入中文的时候,输入框里面除了拼音之外,字母之间还会出现一些特殊字符,如果监听input事件并且将内容发到后端去请求的话,就有可能产生影响。
例如:用户想要输入“人人”,输入框里面显示的是 “r e n r e n” 中间的空白字符,通过encodeURI
方法之后,变成了了“%E2%80%86”,不同于普通空白符的“%20”。
解决办法:可以监听输入框的compositionstart
方法设置一个标记位,监听compositionend
取消标记位,标记位存在的时候表明用户正在输入但是没有选中候选项,这个时候就不发请求到后端。又或者可以把内容里面的特殊字符replace掉。
参考:https://developer.mozilla.org/en-US/docs/Web/Events/compositionstart