在谷歌地图API自动完成中显示不匹配字符串的结果
Showing results for an non-matching string in Google Maps API Autocomplete
客户端希望用户能够在自动完成下拉列表中输入乱码文本或不正确的文本,并显示最后一个正确的匹配(而不是默认情况下清空下拉列表)。类似地,当用户删除破坏它的字符时,正常的自动完成功能需要重新启动
应该附加哪个事件处理程序来检查返回了多少新结果?选项可以是输入元素上的"keyup",但它发生在结果返回之前;另一个选项是调整".pac容器"元素的大小(通过突变观察者)。我在Autocomplete上没有看到任何方便的"结果返回"事件。
一旦基本替换工作正常,事件按顺序启动,那么在删除字符方面就会出现更多问题。不知怎的,在错误的情况下,额外的结果会被困在div上。例子JSBin当一个人到达这一点。
这里可以看到最终的JSBin解决方案。
一些解释:
- 从本质上讲,这会获得最后一个成功状态,并重新应用它,直到再次出现成功状态
- 我选择在keyup事件上设置Timeout,因为使用MutationObserver触发太不可靠,次数太多,很难存储和返回到旧状态
- 需要将类添加到添加的结果中,这样我就可以在下拉列表中操作新的和旧的结果
- 需要建立一套相当复杂的条件,以使其在删除时不会中断,并在不同情况下实际删除正确的元素。这些情况大致对应于:
- 没有结果并且上次成功
- 没有结果并且上次失败
- 某些结果和上次失败
- 一些结果和上次成功
- 包含一个功能,在用户单击关闭时强制删除下拉列表
这些可以在工作中的JSBin中看到。我希望这能帮助到一些人!
相关文章:
- 谷歌地图标记不会显示
- 高库存时期时间与时区不匹配
- 标记不会显示在谷歌地图上
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Javascript:图像与单选按钮的值不匹配
- hasOwnProperty-即使有属性,也不会显示属性
- 当我使用高度百分比时,谷歌地图javascript api不会显示
- 为什么缩放按钮不会显示在照片擦除中
- 突出显示列表的父项,但不突出显示所有子项
- 始终在 jQuery 自动完成中显示特定选项,即使它与输入不匹配
- 如果项目不匹配,则显示变量
- 在谷歌地图API自动完成中显示不匹配字符串的结果
- Javascript 解析 json 日期时区不匹配会导致显示错误的日期
- 在表单中显示密码不匹配或其强度的错误消息
- 查找所有重复行并显示不匹配项
- javascript密码匹配,如果不匹配显示在innerHTML
- 用Angular过滤器突出显示搜索结果,隐藏不匹配的文本
- 当RowFilter不匹配时显示消息
- 显示“无结果”;如果输入与数组名称不匹配(javascript)
- 当错误消息显示用户名和密码不匹配时,如何通过Cognito验证用户池中的用户?