javascript - 如何获取数据列表的更改事件?

标签 javascript jquery html html-datalist

我正在使用数据列表,需要检测用户何时从下拉列表中选择了某些内容。 A similar question has been asked但我需要它,以便仅当用户从数据列表中选择某些内容时才会触发事件。如果他们在输入中键入内容,那么我不希望事件触发。 (请注意,在我链接的问题的已接受答案中,它们绑定(bind)了输入,这不是我想要的)。我试过了(没有成功):

<datalist>
    <option>Option 1 Here</option> 
    <option>Option 2 Here</option>
</datalist>


$(document).on('change', 'datalist', function(){
   alert('hi');
});

编辑: 这个问题与建议的问题不同,因为它是一个完全不同的问题。

最佳答案

您可以在更改时手动检查它。但是你需要检查datalist输入的变化。

FIDDLE

$(document).on('change', 'input', function() {
  var options = $('datalist')[0].options;
  var val = $(this).val();
  for (var i = 0; i < options.length; i++) {
    if (options[i].value === val) {
      console.log(val);
      break;
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

<input list="ff">
<datalist id="ff">
  <option>Option 1 Here</option>
  <option>Option 2 Here</option>
</datalist>

关于javascript - 如何获取数据列表的更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23647359/

相关文章:

javascript - 绑定(bind)和取消绑定(bind)函数

JavaScript 通过下拉列表搜索表格

html - 相同样式的输入和选择元素上的不同内边距

javascript - 如何使用 javascript 动态隐藏元素?

ruby-on-rails - Rails 和 <span> 标签

javascript - Observable 的设置值未在 Knockout 中更新

javascript - 动态添加到html元素中

javascript - jQuery:如果选中则禁用 Prop

javascript - 当我将所有 javascript 编译到一个文件时,如何检测页面

当我们移动到下一个选项卡时,jquery ui 选项卡需要清空上一个选项卡