2015-04-02 79 views
2

我正在使用ui-select,并希望在用户从输入中单击时(即ui-select-search上的模糊事件)选择列表中的第一个选项。目前,选择框保持打开状态,直到用户列出或做出选择。Angular ui-select在模糊上选择

+0

为了进一步讨论,我尝试在本页上由tonyh发布的指令中包装元素: https://github.com/angular-ui/ui-select/issues/432#issuecomment-65490071 返回的事件似乎与通常被认为是模糊/焦点事件的事件相对应。 – Csizzle 2015-04-02 20:08:21

+0

查看将函数绑定到与select相关联的.ui-select-search文本框,以便当它变模糊时,将选择第一个项目(它始终与用户输入相匹配,因为它是作为第一个元素创建的从刷新函数返回的数组)。在引擎盖下搜索api,然后选择第一个项目。 – Csizzle 2015-04-06 19:03:54

+0

看看这个解决方案,它为我工作! [https://stackoverflow.com/a/45990035/3040886](https://stackoverflow.com/a/45990035/3040886) – 2017-08-31 21:09:50

回答

5

您可以添加其他指令到用户界面,选择元素,像这样:

<ui-select select-on-blur ... 

然后,像这样实现的:(的“如果”从_handleDropDownSelection方法复制)

.directive('selectOnBlur', function() { 
    return { 
     require: 'uiSelect', 
     link: function(scope, elm, attrs, ctrl) { 
      elm.on('blur', 'input.ui-select-search', function(e) { 
       if(ctrl.open && (ctrl.tagging.isActivated || ctrl.activeIndex >= 0)){ 
        ctrl.select(ctrl.items[ctrl.activeIndex]); 
       } 
       e.target.value = ''; 
      }); 
     } 
    }; 
}) 

(注意:这只适用于jquery,如果没有jquery,你需要以不同的方式选择输入)