我有一个简单的下拉菜单和一个在页面中提交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后模拟单击下拉按钮。