是否有事件连接到数据列表<option>的选择?

时间:2017-06-11 16:35:42

标签: javascript html html-input dom-events html-datalist

我在<input>字段中有一个(动态)选项列表:

&#13;
&#13;
<input list="choices">
<datalist id="choices">
<option>one</option>
<option>two</option>
</datalist>
&#13;
&#13;
&#13;

在选择<option>之后是否有事件被触发?(如果这很重要,我想在Vue.js中捕获/使用)。这将是在下面的场景中单击鼠标的左键时:

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个。它将检查输入框中是否存在该值,并在您按要求选择选项时触发警报

<input list="choices" id="searchbox">
<datalist id="choices">
<option id="one">one</option>
<option>two</option>
</datalist>


$("#searchbox").bind('input', function () {
    if(checkExists( $('#searchbox').val() ) === true){
        alert('item selected')
    }
});

function checkExists(inputValue) {
    console.log(inputValue);

    var x = document.getElementById("choices");
    var i;
    var flag;
    for (i = 0; i < x.options.length; i++) {
        if(inputValue == x.options[i].value){
            flag = true;
        }
    }
    return flag;
}

答案 1 :(得分:0)

看起来datalist中的选项不会触发任何事件,因此您需要编写自己的解决方案。

我能够在 元素

中使用 @input ,使用datalist中的选项执行类似火灾事件的操作

例如,在您的代码中,您可以尝试以此

开头的解决方案
<input list="choices" @input="checkInput" >
<datalist id="choices">
 <option>one</option>
 <option>two</option>
</datalist>

在与@input一起使用的方法中,您可以检查输入值的变化。

  checkInput(e){
    var inputValue = e.target.value;
    //Your code
  },

例如,您可以检查输入值,在点击您的datalyst的一个选项后,是否是有效选项,并且在满足条件后,您可以启动另一种方法或任何您想要的方法。