我是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),您可以在不斷輸入內容的同時關注選項輸入文字? –
感謝您的提問。我會更新我的答案。 –