2021 年从数据库自动完成 html 表单

时间:2021-02-05 10:48:12

标签: html json forms autocomplete

有很多关于如何自动完成一些输入和相关表单小部件的文章。目标是使用数据库中的数据(通过 json api)自动完成用户输入,但仅将数据库中的 id(s) 发送回服务器。有两种使用情况:

  1. 简单的 id-name(或 id-value)对
  2. 加上一些“相关”信息(比如 - 一个虚拟的例子,不要判断 - 在选择城市时也选择国家)

自古以来,就使用了 jquery 自动完成功能,它正在发挥作用,但由于 jquery 已成为太多人的“害群之马”,我正在寻找其他可能的解决方案。

现有解决方案:

  1. jquery-autocomplete + input.text (value) + input.hidden (id):它有效,可以使用一些 css 使引导程序友好,您可以通过不给那些 input.text 命名来禁用文本发送到服务器(s) 所以只有需要的数据被传递到服务器,“相关”数据可以通过输入/选择 id 设置;一切正常
  2. jquery-autocomplete + input.text (value) 带有一些 data-id 属性;与上面相同,不需要添加那些隐藏的输入,但您必须“创建”发布请求(来自 javascript);发送 json 并将 FormData 与一些 javascript 一起使用可以让您的生活更轻松(至少对于不那么复杂的表单);另外,您可以(如果幸运的话)仅通过名称访问表单输入(如果同一页面上有多个动态生成的表单,以避免 id 冲突)
  3. bootstrap-select2 是一个不错的候选者,不幸的是我不喜欢将输入放入下拉列表的想法;另外,我不确定您是否可以使用“相关”信息来填充其他字段

您明白了,我正在寻找诸如“可编辑/可搜索选择并动态获取数据”之类的东西。除了上面列出的那些解决方案,这些天还有其他的吗?

1 个答案:

答案 0 :(得分:0)

有很多选项可用于通过自动完成表单“增强”用户选择(仅仅因为它看起来更高级,并不一定会让用户更容易使用!请记住,这取决于您的用例,如果可以,请与最终用户一起测试)

首先,大多数人不知道 HTML5 原生的 <datalist> 元素,它可以在不需要任何 javascript 的情况下涵盖您的第一种情况。 它当然有限制,但迄今为止是最便宜的选择:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist

在兄弟中也有不错的报道,有待您的需求确认:

https://caniuse.com/datalist

如果您正在寻找更高级的控件,确实有很多可用的控件,但这取决于您的堆栈,例如,如果您使用前端框架(如 React 或 Vue)和/或 UI 库(如 Material Design、Twitter Bootstrap) , Bulma, Bumbag,(在此处插入任何 UI 库名称...):

您可能会发现它们很方便(它们有自己的自定义选项和限制),但需要注意的是需要采用其 UI 库和/或框架本身。

也只是最后一个小说明:

<块引用>

由于 jquery 已经成为太多人的“害群之马”,我正在寻找其他可能的解决方案

仅仅因为越来越多的人这样认为,并不意味着它一定适用于您自己的项目。 那些天我自己不再使用 jQuery,因为我通常使用前端框架运行,但对于后端开发人员,我认为它仍然可以提供一些好处:) 如果它适合您,那么 IMO 没有什么特别的问题。