在HTML中的Datalist中查找所选项目

Sid*_*d M 6 javascript jquery html5 html-datalist

我有一个像这样的数据主义者

<input list="browsers">

<datalist id="browsers">
  <option id="op1" value="Internet Explorer">
  <option id="op2" value="Firefox">
  <option id="op3" value="Chrome">
  <option id="op4" value="Opera">
  <option id="op5" value="Safari">
</datalist>
Run Code Online (Sandbox Code Playgroud)

我正在使用jquery向datalist添加"option".现在的问题是如何找到用户在datalist中选择/点击的选项.我想在用户选择/点击选项后立即获取选项的ID?

ᾠῗᵲ*_*ᵲᄐᶌ 9

您可以在输入字段中添加ID - 并监听输入事件.然后,您必须获取要在选择器中使用的输入值以获取所选选项

$(function() {
  $('#browserinput').on('input',function() {
    var opt = $('option[value="'+$(this).val()+'"]');
    alert(opt.length ? opt.attr('id') : 'NO OPTION');
  });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id='browserinput' list="browsers">

<datalist id="browsers">
  <option id="op1" value="Internet Explorer" />
  <option id="op2" value="Firefox" />
  <option id="op3" value="Chrome" />
  <option id="op4" value="Opera" />
  <option id="op5" value="Safari" />
</datalist>
Run Code Online (Sandbox Code Playgroud)

  • 如果我对任何2个选项都有相同的价值怎么办...那么我将永远得到第一个选项.. (5认同)

Boj*_*ski -1

您可以使用 is(':selected') 检查

$('#browsers option').each(function() {
    if($(this).is(':selected')){
     // Your code here with the selected value
   }
});
Run Code Online (Sandbox Code Playgroud)

或者获取所选选项值

 $('#browsers').val();
Run Code Online (Sandbox Code Playgroud)

  • 如果用户插入的内容不在列表中怎么办? (2认同)
  • 这个答案是不正确的。`datalist` 不支持 `:selected` 伪类,因为 datalist 可以为多个输入提供建议,并且每个输入可以包含列表中的不同选择。评论中的小提琴做了完全不同的事情。 (2认同)