请教一个关于自动完成的问题

2023-11-16 07:29:43 +08:00
 flyn

如图所示,在 Android 上使用 Google 搜索时先输入任意关键字触发联想列表,再输入拼音,此时点击任意联想关键词右侧的↖按钮即可将搜索框文本替换成对应的内容,同时候选的拼音也消失了,但是键盘依然是激活的

测试了几个常见的搜索引擎,搜狗、Bing 和 DuckDuckGO 都可以做到,百度和 360 在替换文本后拼音还在。

查了各种关于 Composition Events 相关的资料,但多数是关于防抖和节流的内容,也尝试了先 blur 再 focus 这种破坏体验的操作。搜了一圈自动完成库,似乎都是点击候选还残留拼音的。

请教一下大佬们怎么才能实现这个平滑的效果呀?

677 次点击
所在节点    前端开发
5 条回复
chnwillliu
2023-11-20 08:00:26 +08:00
键盘仍然激活:pointerdown 里 event.preventDefault

拼音候选消失:input.value 被赋值了
chnwillliu
2023-11-20 08:06:41 +08:00
<input id="input"/>
<button id="button" onpointerdown="event.preventDefault()" onclick="input.value += ' clicked'">click</button>
flyn
2023-11-21 02:46:54 +08:00
@chnwillliu 点击按钮 iOS Safari 键盘直接收起,Android 下拼音候选还在。不过谢谢了,我还是先 blur 再 focus ,起码在 Android 下还行
chnwillliu
2023-11-21 03:43:37 +08:00
我没有 iOS ,安卓 Chrome Gboard 输入法下测试是可以的。

Safari 不行可以把 onclick 换成 onpointerup,.记得也加上 preventDefault 。
flyn
2023-11-21 06:09:37 +08:00
果然和输入法有关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/992297

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX