Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一个事件连接到数据列表的选择?_Javascript_Html_Html Input_Dom Events_Html Datalist - Fatal编程技术网

Javascript 是否有一个事件连接到数据列表的选择?

Javascript 是否有一个事件连接到数据列表的选择?,javascript,html,html-input,dom-events,html-datalist,Javascript,Html,Html Input,Dom Events,Html Datalist,我有一个字段中的动态选项列表: 一 二 试试这个。它将检查输入框中是否存在该值,并在您按要求选择选项时触发警报 <input list="choices" id="searchbox"> <datalist id="choices"> <option id="one">one</option> <option>two</option> </datalist> $("#searchbox").bind('in

我有一个字段中的动态选项列表:

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

<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;
}

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

我可以使用datalist中的选项,在元素中使用@input来执行类似于fire事件的操作

例如,在您的代码中,您可以尝试从以下内容开始的解决方案

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

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

您可以触发。当选项值为changed@ISHIDA:您的意思是在选择选项之后,不是在每次击键之后,因此输入字段的内容发生了变化?那太好了。是的,我在回答中提供了一个例子。这不是我想要的,请参阅-每次更改输入框后都会触发警报-我想避免的事情正是您在选择选项时想要捕获mousedown事件?这可能是一个选项-我希望在选中的选项被单击时触发事件-此时,我会清除搜索字段并使用选中的选项option@WoJ清除搜索字段并使用所选选项-这不是默认情况下选择下拉选项所做的吗?@WoJ检查此jsfiddle-在此情况下,它将根据您的要求为每个选择的选项值触发。您的解决方案是使用Vue?@lawrencerone是的,我描述的解决方案仅在使用Vue时有效。
  checkInput(e){
    var inputValue = e.target.value;
    //Your code
  },