前几天,项目中的开发人员向研发组提交了这样一个问题,发现在PC中使用搜狗输入法时,输入完成敲击回车按钮无法触发输入框的查询事件。同样,另外一个组件在IOS系统中,使用IOS原生的输入法也存在该问题。
针对该问题我跟踪了一下,发现当使用搜狗输入法时,光标虽然在input框里,但是输入的内容却在输入法提供的浮动窗口中,输入结束,敲击空格或回车,此时才把输入的内容放入input框中。
查看了该组件的实现代码,发现该组件是监听的keyup事件,以及监听了input的回车事件来实现输入完成后的自动查询。经过分析,使用搜狗输入法输入时,由于输入法有自己的弹出框,所有事件均在这个弹出框上,输入完成敲击回车或空格时同样也是,所以无法触发组件的input框事件。对于此种情况,考虑给input框绑定onchange事件来解决该问题,但是onchange事件必须要input框失去焦点才会触发。由此看起来,似乎已经没有什么好的解决办法了,于是乎就考虑到能否在input的输入框里加一个小的查询按钮来解决该问题。
我把该分析过程以及产品组这边暂定的解决方案告诉了相关技术人员,让他们等候产品组这边的组件更新。本来想着这件事就告一段落,他们只需要等着产品组这边的更新即可了。但是,到了第二天下午,我收到一个amazing的消息,发现该问题的开发人员告诉我说已经自行解决了该问题,并且在产品组提供的组件上修改完成并做了有效性验证!让我这边再去看一下那样修改是否合适!
最终是解决方案是使用HTML5的oninput
与IE专属的onpropertychange
来解决该问题。这篇帖子已经阐述得很详细了,这里就不在详细描述了。
在这里:http://www.cnblogs.com/lhb25/archive/2012/11/30/oninput-and-onpropertychange-event-for-input.html
对于这件事有如下几点感想:
- 技术人员的技术成长,不仅取决与多看书多看资料与文档,还取决于碰到问题不放弃的专研精神。同时,这股力量还会鞭策你多去了解你不懂的东西,弄懂之后发现更多的不懂,形成良好的正向循环。所以,毫不夸张的说专研精神是技术人员成长的源动力。
- 懈怠、满于现有解决方案而不更深入的去探求更完美的方案,是我这边在这个问题上没有走得更远的根本原因。
- 团队中需要更多这样的技术人员,思想的碰撞才能产生更多的火花。同时技术人员之间需要更多的技术分享与沟通,独立的思想注定会是孤独的。
网友评论