我有一个简单的下拉列表,当您单击它时会打开一个搜索字段。即使我将此搜索的文本字段设置为自动对焦,但它并不适用于所有浏览器。
我将使用什么Javascript / jQuery方法来检查包含的UL css显示是否设置为阻止,以便我可以使用.focus()强制焦点在该字段上。
HTML:
<a href="#" id="quickSearch" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Quick Search</a>
<ul class="dropdown-menu" role="menu">
<li id="li-quicksearch">
<form id="mainSearch" class="form-search">
<p>
<input type="text" id="inputSearch" class="form-control" placeholder="Quick Search" required="" autofocus autocomplete="off">
<button type="submit">SUBMIT</button>
</p>
</form>
</li>
</ul>
答案 0 :(得分:1)
编辑:没有css更改事件,因此您必须以两种方式之一解决问题。
检查设置间隔中的dom元素以查看其css是否已更改
在用户交互/您的代码更改dom元素的css时触发事件。
第一种方式看起来像这样:
var element = $(".dropdown-menu");
function checkForChanges()
{
if (element.css('display') == 'block')
{
// do your .focus() stuff here
}
setTimeout(checkForChanges, 500); // does this every half second.
}
或第二种方式:
$('.toggle').on('click', function() {
$('.dropdown-menu').toggle();
$('.dropdown-menu').trigger('change');
});
$('.dropdown-menu').on('change', function(){
if($(this).css(.css('display') == 'block')
{
// do your .focus() stuff here
}
});
答案 1 :(得分:1)
您可以使用纯 JavaScript 检查ul
的显示值:
<强> JS 强>:
var display = document.getElementById('dropdown-menu')[0].style.display;
if (display === 'block') {
//do what you want.
}
或使用 jQuery :
if ($('.dropdown-menu').css('display') === 'block') {
//do what you want.
}
答案 2 :(得分:1)
看起来您正在使用bootstrap来创建下拉列表。如果是这种情况,您可以使用&#34;显示&#34;事件。但是,您需要将事件附加到容器元素上。
<div class="quickSearchContainer">
<a href="#" id="quickSearch" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Quick Search</a>
<ul class="dropdown-menu" role="menu">
<li id="li-quicksearch">
<form id="mainSearch" class="form-search">
<p>
<input type="text" id="inputSearch" class="form-control" placeholder="Quick Search" required="" autofocus autocomplete="off">
<button type="submit">SUBMIT</button>
</p>
</form>
</li>
</ul>
</div>
$('#quickSearchContainer').on('show.bs.dropdown', function () {
$('#inputSearch').focus();
});
答案 3 :(得分:0)
我想感谢大家的意见,但我找到的工作解决方案是修改引导程序JS,以便在下拉列表的OPEN的toggleClass上进行自动对焦。每个人都获得了荣誉!