HTML/CSS 下拉输入 onclick 未触发

标签 html css input hyperlink onclick

我正在尝试仅使用 CSS/HTML 实现带有下拉建议的搜索框。它显示正常,但我无法在单击下拉元素时触发 onclick 事件,并且链接也不起作用。如果我不隐藏列表,那么它可以正常工作,但是当使用输入框的“:focus”选择器隐藏然后显示时,它不再对点击使用react。

知道如何解决这个问题吗?这是隐藏元素的正常行为吗?

它基于this example ,它似乎也在那里不起作用。

重现问题的简单示例:

HTML:

<html>
  <head>
    <link rel="stylesheet" href="test.css" />
  </head>
    <input class="inputfield" type="text" placeholder="SEARCH...">
    <ul class="search-results">
      <li class="typeahead" onclick="console.log('test')">
        <a class="center" href="/test" >test</a>
      </li>
      <li class="typeahead" onclick="console.log('test')">
        <a class="center" href="/test" >test</a>
      </li>
      <li class="typeahead" onclick="console.log('test')">
        <a class="center" href="/test" >test</a>
      </li>
      <li class="typeahead" onclick="console.log('test')">
        <a class="center" href="/test" >test</a>
     </li>
   </ul>
</html>

CSS:

input{
  width: 300px;
  height: 26px;
  padding-left: 10px;
  border: 1px solid lightgrey;
  outline: none;
}

ul{
  list-style-type: none;
  padding: 0;
  margin: 0;
  visibility: hidden;
}

input:focus + ul{
  visibility: visible;
}


li{
  border: 1px solid lightgrey;
  border-top-style: none;
  width: 300px;
  height: 25px;
  padding-left: 10px;
  background: #fff;
  cursor: pointer;
}

li:hover{
  background-color: lightgrey;
}

li:hover a{
  color: white;
}

a{
  color: black;
  font-size: 12px;
  display: block;
  text-decoration: none;
}

最佳答案

问题是触发器的顺序,如 CeritT 的回答。

我的建议是使用transitionul不会立即消失,从而允许点击它。

ul.search-results {
    list-style-type: none;
    padding: 0;
    margin: 0;
    visibility: hidden;
    transition: visibility 0.2s;
}

关于HTML/CSS 下拉输入 onclick 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25198996/

相关文章:

html - 如何使我的 <aside> 与主要部分高度相同?

CSS 在开发人员服务器上的 Django 管理员上损坏

html 表单输入 - 每个输入字段的多个答案

javascript - CSS定位,需要一些建议

CSS 动画没有无缝运行

javascript - 输入位置在 Iphone 上无法正确显示

css - 编号按钮 - 不同样式的编号和标题

html - 简单的 css 无法在运行中加载

javascript - HTML5 拖放 getData() 仅适用于 Chrome 中的拖放事件?

html - 无法删除 Bootstrap 进度条中的边框