按钮datalist黑客

时间:2014-12-29 19:59:27

标签: javascript html html5

我正在考虑在datalist选项的顶部添加一个隐形按钮,因此我可以点击datalist来触发事件。为什么这不起作用?

   var button=document.createElement("button")
   button.style.width=option.style.width;
   button.style.height=option.style.height;
   button.style.background="#EEEEEE"
   option.appendChild(button);
   button.onclick="clickedfriendsOption()";

2 个答案:

答案 0 :(得分:1)

您无法在<datalist>内添加按钮,也无法收听<option>上的活动。 <datalist>控制<input>。因此,您需要收听oninput元素的<input>事件,以获取<datalist>中选择的元素。

input.addEventListener('input', clickedfriendsOption);

DEMO(打开你的控制台):

&#13;
&#13;
document.getElementById('test').addEventListener('input', function(){
  console.log(this.value);
});
&#13;
<label for="test">Test:</label>
<input type="text" id="test" list="testlist">
<datalist id="testlist">
  <option value="One">One</option>
  <option value="Two">Two</option>
  <option value="Three">Three</option>
  <option value="Four">Four</option>
</datalist>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

首先,代码中的最后一行不起作用。这样做:

button.onclick=function(){clickedfriendsOption()}

正如您所说,点击您的按钮就像执行此功能一样:

function f(){
     return "clickedfriendsOption()";   
     //Observe that "clickedfriendsOption()" is a string and not a function
}

其次,有一种更好的方法可以使元素不可见而不是改变颜色:

button.style.visibility="hidden";