javascript - 所选 <datalist> 项的值

标签 javascript jquery html

<分区>

我正在使用 <input type='text'>元素与 <datalist> 一起为表单提供用户名建议。一切都按预期工作,我的所有用户都出现了。

但是,当用户提交表单时,我想根据输入在我的数据存储中选择正确的用户。不幸的是,名称不是唯一的,并且有可能出现重复。为了避免这种情况,我的所有用户都有一个唯一的 ID,它也是 <datalist> 的一部分。的 <options>标签。

除了输入的文本值,有什么方法可以读取其他内容吗?是否有对所选数据列表元素的引用?我可以根据文本输入检索用户 ID 吗?

<input type="text" class="form-control" name="userName" placeholder="Type a user's name" value="" list="user-datalist" required autofocus>

<datalist id="user-datalist">
  <option id="53c911ea609252c600632dfe" value="Mr Smith">Mr Smith</option>
  <option id="53c911ea60925sdfs4e444eg" value="John Snow">John Snow</option>
  <option id="53c911ea6034534535k345th" value="John Snow">John Snow</option>
  <option id="53c911ea60925234234234er" value="Mickey Mouse">Mickey Mouse</option>
</datalist>

最佳答案

如您所说,名称不是唯一的。所以我在您的数据列表中添加了一个重复的名称。

<input type="text" class="form-control" name="userName" placeholder="Type a user's name" value="" list="user-datalist" required autofocus>

<datalist id="user-datalist">
  <option id="53c911ea609252c600632dfe" value="Mr Smith">Mr Smith</option>
    <option id="53c911ea60925sdfs4e444eg1" value="John Snow">John Snow</option>
  <option id="53c911ea60925sdfs4e444eg2" value="John Snow">John Snow</option>
  <option id="53c911ea60925234234234er" value="Mickey Mouse">Mickey Mouse</option>
</datalist>
    <input type="button" id="sub" value="sub"/>

获取名字的id

$('#sub').on('click',function(){
    var g=$('input[type="text"]').val();  
  var id = $('#user-datalist').find('option').filter(function() { return $.trim( $(this).text() ) === g; }).attr('id');
    alert(id);
});

DEMO

关于javascript - 所选 <datalist> 项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992578/

相关文章:

javascript - javascript是否禁止将输入类型从密码更改为密码?

Javascript 将 2 个数组合并到第三个数组中以获取所需的所有数据

html - 为什么除 Chrome 之外的所有浏览器中这些 div 之间仍然有空白?

javascript - 资源管理器使用 jquery 动画很慢。其他浏览器运行良好

html - 如何保护用户提交的 HTML 标记?

php - 如何在jquery中的SELECT查询中传递多个参数?

javascript - 水平放置的提交按钮和错误消息的正确对齐

javascript - html 下拉列表重置后使用 jquery 选择默认值

javascript - 导航栏覆盖文本(Bootstrap)

javascript - 为什么我的子菜单中的 anchor 返回 false?