【发布时间】:2022-01-01 07:33:43
【问题描述】:
我正在 Blazor 中创建自己的自动完成输入。 (如下所示)
function FocusOut()
{
document.getElementById("list-item-one").innerHTML = "Focus out";
}
function Click()
{
document.getElementById("list-item-one").innerHTML = "Click";
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="search" onfocusout="FocusOut()" />
<ul class="dropdown">
<li id="list-item-one" onclick="Click()">List Item One</li>
</ul>
当我单击列表项时,会触发 onfocusout 事件而不是 onclick 事件。有没有办法“推送” onclick 事件?
这不是父子关系,因此“stopPropagation”无效。我也知道有一个datalist 标签,但我没有使用它,因为它在不同浏览器中的外观、感觉和行为方式。
【问题讨论】:
-
您可以将功能实现添加到问题中吗?如果你去掉
Clear()函数并用一些空的void函数替换它,它工作吗? -
不,它没有,它只是一个将 bool "showDropdown" 设置为 false 的 void。
-
用代码更新您的问题或创建一个小提琴,以便我们测试解决方案。
-
乍一看,问题在于
onclick在onfocusout事件之后执行,此时下拉菜单关闭。尝试将onclick替换为onmousedown,但根据您想要执行的操作,您可能不希望关闭下拉菜单... -
我已经使用有效的 javascript 更新了我的代码。那里的事件一个接一个地执行。但话虽如此,onmousedown 而不是 onclick 就像一个魅力。谢谢!
标签: javascript html jquery blazor blazor-webassembly