多语言展示
当前在线:1959今日阅读:27今日分享:41

anguarjs的ng-change输入中文汉字执行了两次

anguarjs的ng-change事件,在输入框输入一个英文的时候,事件执行了一次,但当输入一个中文的时候执行了两次(我是在google chrome下模拟手机的访问的网站),肿么办?
方法/步骤
1

从下图可以看到,我输入一个“王”,请求的keyword有两个,一个是拼音“wang”,一个汉字是“王” 这不行啊  1:成倍的增加了后端的请求量,2:前台搜索结果提示,也会有两个结果的切换。

2

是anguarjs的ng-change事件的问题吗? 网上搜索了一下,没有找到相关资料。于是想试试其他浏览器,用了360浏览器,选的极速模式。如下图,这个只请求了一次。用火狐,也只请求了一次,于是猜想可能和浏览器有关。

4

1:Chrome和firefox,在输入框中输入中文的时候,输入的拼音在中文被输入之前填写在输入框里2:到了360,从下图中我们可以看到。当打开中文输入法打字的时候,并没有任何文字被输入到输入框中,之后当按了回车或者空格,将文字输入到输入框中猜想不同浏览器解析键盘事件不一样于是查看了keyup keydown的监听,可以看出Chrome和360是只要键盘的按键有按下和抬起就会执行keydown和keyup,而firefox在按下是执行一次keydown,什么时候按了回车或者空格,才会执行一次keyup,如下图

5

360和firefox都只执行了一次,但输入框的显示不一致,而且执行keyup keydown的事件也不一样,chrome和他们有相同有不同,真相更加扑朔迷离。我只能给出的解释是:中文输入的时候, 不同浏览器对键盘事件的捕捉执行的不一致,就像不同浏览器对样式的渲染不一致一样,所以捕捉change的事件也不一致。(这是一个无奈的答案)

推荐信息