2015-04-02 2 views
2

Я использую ui-select и хотел бы выбрать первый вариант в списке, когда пользователь нажимает на него (т.е. событие размытия на ui-select-search). В настоящее время поле выбора остается открытым до тех пор, пока пользователь не выберет или не сделает выбор.Угловой ui-select выберите на blur

+0

Для дальнейшего обсуждения я попробовал обернуть элемент в директиве, опубликованной tonyh на этой странице: https://github.com/angular-ui/ui-select/issues/432#issuecomment-65490071 Возвращаемые события, похоже, не соответствуют тому, что обычно можно считать событием размытия/фокусировки. – Csizzle

+0

Глядя на привязку функции к текстовому полю .ui-select-search, связанному с выбором, чтобы при размывании был выбран первый элемент (который всегда будет соответствовать пользовательскому вводу, поскольку он создается как первый элемент в массив возвращается из функции обновления). Поиск под капотом для api для выбора первого элемента. – Csizzle

+0

Проверьте это решение, оно сработало для меня! [Https://stackoverflow.com/a/45990035/3040886](https://stackoverflow.com/a/45990035/3040886) –

ответ

5

Вы можете добавить еще одну директиву Ui-выберите элемент следующим образом:

<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 = ''; 
      }); 
     } 
    }; 
}) 

(note: это работает только с jquery, без jquery вам нужно будет выбрать вход другим способом)

 Смежные вопросы

  • Нет связанных вопросов^_^