diff --git a/src/uiSelectController.js b/src/uiSelectController.js index 7ef150625..5432e46a0 100644 --- a/src/uiSelectController.js +++ b/src/uiSelectController.js @@ -111,8 +111,6 @@ uis.controller('uiSelectCtrl', if (!ctrl.disabled && !ctrl.open) { if(!avoidReset) _resetSearchInput(); - $scope.$broadcast('uis:activate'); - ctrl.open = true; ctrl.activeIndex = ctrl.activeIndex >= ctrl.items.length ? 0 : ctrl.activeIndex; @@ -131,13 +129,13 @@ uis.controller('uiSelectCtrl', // Only focus input after the animation has finished ctrl.$animate.off('removeClass', searchInput[0], animateHandler); $timeout(function () { - ctrl.focusSearchInput(initSearchValue); + ctrl.focusSearchInput(); }); } else if (phase === 'close') { // Only focus input after the animation has finished ctrl.$animate.off('enter', container[0], animateHandler); $timeout(function () { - ctrl.focusSearchInput(initSearchValue); + ctrl.focusSearchInput(); }); } }; @@ -149,7 +147,7 @@ uis.controller('uiSelectCtrl', } } else { $timeout(function () { - ctrl.focusSearchInput(initSearchValue); + ctrl.focusSearchInput(); if(!ctrl.tagging.isActivated && ctrl.items.length > 1) { _ensureHighlightVisible(); } @@ -162,9 +160,16 @@ uis.controller('uiSelectCtrl', } }; - ctrl.focusSearchInput = function (initSearchValue) { - ctrl.search = initSearchValue || ctrl.search; + ctrl.initSearch = function(searchValue) { + ctrl.search = searchValue || ctrl.search; + }; + + ctrl.focusSearchInput = function () { ctrl.searchInput[0].focus(); + if (ctrl.focusser) { + ctrl.focusser.trigger('blur'); // in all browsers but IE the focus causes a blur, for IEs sake force a blur + } + $scope.$broadcast('uis:activate'); }; ctrl.findGroupByName = function(name) { @@ -423,7 +428,7 @@ uis.controller('uiSelectCtrl', ctrl.close(skipFocusser); return; } - } + } _resetSearchInput(); $scope.$broadcast('uis:select', item); diff --git a/src/uiSelectSingleDirective.js b/src/uiSelectSingleDirective.js index 73abedd23..931fcb26b 100644 --- a/src/uiSelectSingleDirective.js +++ b/src/uiSelectSingleDirective.js @@ -78,11 +78,15 @@ uis.directive('uiSelectSingle', ['$timeout','$compile', function($timeout, $comp $select.focus = true; }); }); + focusser.bind("blur", function(){ scope.$evalAsync(function(){ $select.focus = false; + $select.initSearch(focusser.val()); + focusser.val(''); }); }); + focusser.bind("keydown", function(e){ if (e.which === KEY.BACKSPACE) { @@ -112,8 +116,7 @@ uis.directive('uiSelectSingle', ['$timeout','$compile', function($timeout, $comp return; } - $select.activate(focusser.val()); //User pressed some regular key, so we pass it to the search input - focusser.val(''); + $select.activate(); //User pressed some regular key, so we activate the search input scope.$digest(); });