我是AngularJS和Bootstrap中的一名新成员,希望得到一些帮助。在输入文字中写入时保持关注下拉列表
我想创建一个动态的下拉列表,它通过输入文本进行过滤。 这里是我的代码:
<input id="SelectedCountry" type="text" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="true" ng-model="Pass" autocomplete="off" />
<ul class="dropdown-menu">
<li data-ng-repeat="r in countrycodes | MyFilter *my filter in the app.filter. works fine*"><a href="#" data-ng-click="selectedcountry.value=r.value">{{r.name}}</a></li>
</ul>
我想那每次的向下arrowkey重点用户点击将在下拉列表(?它不会自动发生,为什么),所以我写了这个代码:
$(document).on('shown.bs.dropdown', function (event) {
var dropdown = $(event.target);
$("input").keydown(function (e) {
if ((e.which && e.which == 40) || (e.keyCode && e.keyCode == 40)) {
// Set aria-expanded to true
dropdown.find('.dropdown-menu').attr('aria-expanded', true);
// Set focus on the first link in the dropdown
dropdown.find('.dropdown-menu li:first-child a').focus();
return false;
} else {
return true;
}
});
});
我的问题是,当用户按向下的箭头键焦点不再输入文本,所以他不能继续写。
我该如何制作一个动态下拉列表,用户可以在焦点位于菜单上的同时继续书写? 我已经尝试过使用jquery过滤器,但它没有奏效,因为我必须使用AngularJs,因此我可以在用户选择他的选项时触发data-ng-click,此外,我还可以使用数据ng -repeat,所以我不能在html中使用默认的“选择”和“选项”标签。 无处不在,我搜索的解决方案说,不能对同一时间聚焦的元素。也许还有另一种选择?因为这种情况下有很多网站?
谢谢你的帮助
首先,谢谢你的答案。第二,你说“你可以做的是保持一个变量,说哪个下拉列表元素是”重点“”。 我怎么知道当时下拉列表元素的重点? 我尝试了几件事,没有成功。 –
另一件事,如果下拉列表和输入字段不能同时关注,那么如何有很多动态搜索框(最简单的例子是Google搜索框或Facebook),您可以在不断输入内容的同时关注选项输入文字? –
感谢您的提问。我会更新我的答案。 –