jquery - 为什么 .change() 不适用于 datalist 元素?还有其他选择吗?

标签 jquery html html-datalist

我已经对这个主题进行了一些谷歌搜索,但是由于浏览器对 datalist 元素的支持仍然很差,似乎没有人使用它或者之前没有真正问过这个问题。我有一个数据列表:

<form>

     <input placeholder="Enter a location or choose from the list" list="restaurants" id="hp-restaurants">

     <datalist id="restaurants">
         <option value="Sanford, ME" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/sanford/" />
         <option value="Kitery, ME" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/kittery/" />
         <option value="Belfast, ME" data-attr="<?php echo site_url(); ?>/locations/lobster-in-the-rough/belfast/" />
         <option value="Waterville, ME" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/waterville/" />
         <option value="Brewer, ME" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/brewer/" />
         <option value="South Portland, ME" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/south-portland/" />
         <option value="Bedford, NH" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/bedford-nh/" />
         <option value="Dover, NH" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/dover-nh/" />
         <option value="Chichester, NH" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/chichester-nh/" />
         <option value="Salem, NH" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/salem-nh/" />
         <option value="West Lebanon, NH" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/west-lebanon-nh/" />
         <option value="Nashua, NH" data-attr="<?php echo site_url(); ?>/locations/weathervane-restaurants/nashua-nh/" />
     </datalist>

</form>

每个选项都应该链接到我在其中添加的 data-attr 属性中的页面。如果有更简单的方法让这些选项链接到页面,我只是不知道。这是我第一次尝试对 datalist 元素执行任何操作。因此,如果我从根本上做错了,请随意带我去学校。

目前,我正在尝试在下拉列表更改时触发事件。我认为 jQuery 的 .change() 事件可以处理这个问题,但事实并非如此。不管怎样,我正在测试该事件,看看它是否会以此触发:

$('#hp-restaurants').click(function() {
    console.log('HELLO WORLD');
});

没有骰子。

关于在选项列表更改时让此元素链接到这些页面有什么建议吗?

最佳答案

如果您希望在选择数据列表选项时触发事件,而不是等到 change 事件(该事件在选择新选项时触发)并且 焦点被赋予另一个元素)您应该绑定(bind)到 input 事件,如下所示:

 $('#hp-restaurants').on('input', function () {
    console.log('Input has been changed.');
 });

jsFiddle demo |另请参阅 MDN 文档 'oninput'

关于jquery - 为什么 .change() 不适用于 datalist 元素?还有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704105/

相关文章:

jquery - knockout 加载数据非常缓慢

javascript - 以不会导致浏览器因低速连接而回流的方式定义响应式图像(首选 HTML)

html - Weasyprint pdf 不适合页面

html - 动态更新的数据列表不会显示

java - HTML5 input+datalist 使用 Selenium 控制项目选择

javascript - jQuery 滚动播放下一个视频

jquery - 您可以使用 Sharepoint (MOSS 2007) 和 jQuery 安全地操作 DOM 吗?

jQuery 手机 : make a collapsible element 100% width/NOT inset

html - 在哪里可以找到有关 &lt;input&gt; 默认显示的文档?

javascript - 如何使用 Ajax 和 HTML 结构来回显自动完成选项?