【问题标题】:Customize html datalist dropdown自定义 html datalist 下拉菜单
【发布时间】:2015-04-27 09:30:26
【问题描述】:

我想自定义 datalist 下拉菜单的显示方式。我现在有以下数据列表

<input type="text" id="employee" list="employee">
<datalist id="employee">
    <option value="John Doe">John Doe (ID: 1)</option>
    <option value="Jane Doe">Jane Doe (ID: 2)</option>
    <option value="John Jane">John Jane (ID: 3)</option>
</datalist>

当我在输入框中输入时,我看到这样的输出

但我的要求是让它看起来像下面和

选择下拉菜单时,只应选择名称(不带 id)。像这样的:

我该怎么做?基本上我想在下拉列表中显示更多详细信息,但只选择名称而不是提交表单的 ID。另外,我不希望下拉列表中有 2 列(更暗和更亮)。我只想要更多信息的价值。

这是我用于此问题的JSFiddle

附: - 我根据文本字段中的用户输入从 Ajax 调用动态生成此数据列表。另外,我不能使用 jquery 来操作任何东西。它必须是原生 javascript。

【问题讨论】:

  • 移除标签之间的内容。当您从 AJAX 调用接收数据时,您可以自定义每个选项的 value 属性。 Take a look at this link.
  • 您应该发布更多代码,特别是生成数据列表的代码。

标签: javascript html css ajax


【解决方案1】:

出现第二列是因为您将内容放在开始标签和结束标签之间。 更改:

<option value="John Doe">John Doe (ID: 1)</option>

收件人:

<option value="John Doe"></option>

删除第二列。

这可以在通过 AJAX 调用接收数据时完成,只需在 JavaScript 中创建选项:

var option = document.createElement("option");
option.value = name + " (ID: " + id + ")";
document.getElementById("my-datalist").appendChild(option);

上面的代码将创建一列,但是,它在 value 字段中包含 ID。如果您不希望它与表单一起提交,则必须在提交之前将其删除。或者您可以有两列,一列用于名称(值属性),另一列用于 ID(文本内容)。

欲了解更多信息,请参阅此link.

【讨论】:

  • 当您投反对票时,请说明原因。这有效地回答了这个问题。如果这不能回答您的问题,您必须提供更多代码并且更清楚。
  • 感谢您的回复。我不知道谁对你的答案投了反对票。我刚才检查了你的回复。根据您的回答,我有以下问题: 1. 如果我只有 value="John Doe",那么我的下拉菜单将如何看起来像 Jone Doe (ID: 1) 2. 如果我使用 option.value = name + " (身份证号:“+身份证号+”)”;组合,我的提交值怎么可能只是名称?就像我之前问的那样,我想在下拉列表中显示更多选项,但只提交其中的部分信息。
  • @Raghuveer 您必须在提交之前通过从值中删除 ID 来解析响应,或者您必须有两列,一列用于名称,另一列用于 ID(我发现更美观)。似乎没有办法得到你想要的东西(除非你创建一个自定义元素),但最接近的是我提供的选项之一。
  • 感谢您的帮助。我将解析响应。
  • 它有效。我在输入上添加了一个查询选择器并修剪了附加值。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-05-11
  • 2012-10-12
  • 1970-01-01
  • 2021-08-22
  • 2018-11-30
  • 2011-02-06
  • 2018-04-17
相关资源
最近更新 更多