2

我希望这个问题有一个解决方案,因为我觉得它会让我的界面更加用户友好。在阅读了 bootstrap-multiselect 文档后,当您单击下拉菜单时,我找不到知道如何实现对搜索框的关注的方法,而且我还想添加提前输入功能。

我知道有一种名为 enablefiltering 的方法可以将搜索框添加到下拉列表中,但不确定如何为其添加焦点。

指令看起来像这样:(注意这只是指​​令的一部分,我认为应该是应用 ngfocus 的部分,但我可能错了)

return {
        scope: {
            callback: "&",
            ngModel: "="
        },
        link: function (scope, element, attrs) {

            element.multiselect({
                maxHeight: attrs.maxHeight ? attrs.maxHeight : 300,
                includeSelectAllOption: attrs.includeSelectAllOption === undefined || attrs.includeSelectAllOption === null ? true : attrs.includeSelectAllOption === 'true',
                selectedClass: 'active',
                enableFiltering: true,
                enableCaseInsensitiveFiltering: true,
                nonSelectedText: attrs.nonSelectedText ? attrs.nonSelectedText : 'All',
                numberDisplayed: attrs.numberDisplayed ? attrs.numberDisplayed : 2,
                buttonContainer: attrs.buttonClass ? '<div class="btn-block">' : '<div class="btn-group">',
                buttonClass: attrs.buttonClass ? attrs.buttonClass : 'btn btn-default btn-xs',
                buttonWidth: '100%',
                onChange: function(element, checked) {
                    scope.callback();
                }
            });

无论如何要添加这些功能?

谢谢

4

1 回答 1

4

这个问题是针对这个插件的吗?

引导多选

如果是这样,我使用的是相同的插件,并且我还希望在显示下拉菜单时立即将焦点放在“过滤器”输入中。为了解决这个问题,我使用 onDropdownShown 事件将即时焦点放在过滤器区域内。我的代码现在看起来像这样,并且运行良好。您单击下拉列表,可以立即开始输入和过滤。

$('#other-major').multiselect({
   maxHeight: 200,
   numberDisplayed: 20,
   onDropdownShown: function(even) {
      this.$filter.find('.multiselect-search').focus();
    },
enableCaseInsensitiveFiltering: true });
于 2014-12-19T02:12:38.613 回答