如何防止在另一个按钮上用js调用onclick时关闭下拉菜单



我有一个简单的下拉菜单和一个在页面中提交ajax表单的按钮,一个js函数在一个有一定延迟的循环中调用该按钮的onclick函数(该按钮的每10秒onclick方法调用一次,因此一些表单会被提交和刷新(
现在的问题是,每次通过js代码下拉菜单点击按钮时,都会自动关闭
我怀疑调用该按钮的onclick会窃取下拉菜单的焦点,因此每次js代码调用它时,菜单都会关闭
那么,当调用onclick按钮时,我如何防止这种行为?或者有什么更好的方法可以延迟在循环中提交ajax表单吗?

UPDATE
代码是大项目的一部分,但为了更好地理解,您可以考虑以下内容:

<div class="container">
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">JavaScript</a></li>
</ul>
</div>
<form action="/navigationbar/_submitpush" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#pushwindow" id="form3" method="post">
<button id="pushsubmitButton" type="submit" style="display:none">realSubmitButton</button>
<script type="text/javascript">
function checkingPush() {
//Doing something
setTimeout(goingToLoop, 5000);
}
function goingToLoop() {
document.getElementById('pushsubmitButton').click();
}
checkingPush();
</script>
</form>
</div>  

每5秒goingToLoop调用一次,调用pushsubmitButton按钮的onclick功能和下拉菜单关闭

你可以用浏览器的开发控制台来模拟它(打开下拉菜单,在控制台中执行document.getElementById('pushsubmitButton').click(),即使按钮放在表单之外,菜单也会关闭,什么都不做(

问题是bootstraps下拉列表是使用css构建的,并由:focus保持打开。模拟点击其他元素也会将:focus设置为其他元素。

您可以将下拉列表更改为JavaScript解决方案,或者在单击pushsubmitButton后模拟单击下拉按钮。

相关内容

  • 没有找到相关文章

最新更新