javascript – 单击HTML5 datalist选项时执行操作
作者:互联网
我正在使用< datalist>
<datalist id="items"></datalist>
并使用AJAX填充列表
function callServer (input) {
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
//return the JSON object
console.log(xmlhttp.responseText);
var arr = JSON.parse(xmlhttp.responseText);
var parentDiv = document.getElementById('items');
parentDiv.innerHTML = "";
//fill the options in the document
for(var x = 0; x < arr.length; x++) {
var option = document.createElement('option');
option.value = arr[x][0];
option.innerHTML = arr[x][1];
//add each autocomplete option to the 'list'
option.addEventListener("click", function() {
console.log("Test");
});
parentDiv.appendChild(option);
};
}
}
xmlhttp.open("GET", "incl/search.php?value="+input.value, true);
xmlhttp.send();
}
但是,当我点击数据列表中的选项时,我无法执行操作,例如,如果我输入“Ref F”并且项目“Ref flowers”出现,如果我点击它我需要执行一个事件.
我怎样才能做到这一点?
option.addEventListener("click", function() {
option.addEventListener("onclick", function() {
option.addEventListener("change", function() {
解决方法:
很抱歉挖掘这个问题,但我遇到了类似的问题并找到了解决方案,这也应该适合你.
function onInput() {
var val = document.getElementById("input").value;
var opts = document.getElementById('dlist').childNodes;
for (var i = 0; i < opts.length; i++) {
if (opts[i].value === val) {
// An item was selected from the list!
// yourCallbackHere()
alert(opts[i].value);
break;
}
}
}
<input type='text' oninput='onInput()' id='input' list='dlist' />
<datalist id='dlist'>
<option value='Value1'>Text1</option>
<option value='Value2'>Text2</option>
</datalist>
该解决方案源自Stephan Mullers解决方案.它也应该与动态填充的数据列表一起使用.
不幸的是,无法判断用户是否从数据列表中点击了某个项目,或者通过按Tab键选择了该项目,或者是手动输入了整个字符串.
标签:javascript,html5,dom-events,html-datalist 来源: https://codeday.me/bug/20190923/1813705.html