diff --git a/src/components/select/select.js b/src/components/select/select.js index 650d76d97cc..00960cc1454 100755 --- a/src/components/select/select.js +++ b/src/components/select/select.js @@ -187,12 +187,6 @@ function SelectDirective($mdSelect, $mdUtil, $mdTheming, $mdAria, $compile, $par return function postLink(scope, element, attr, ctrls) { var isDisabled, ariaLabelBase; - // Remove event ngModel's blur listener for touched and untouched - // we will do it ourself. - $mdUtil.nextTick(function() { - element.off('blur'); - }); - var containerCtrl = ctrls[0]; var mdSelectCtrl = ctrls[1]; var ngModelCtrl = ctrls[2]; @@ -283,7 +277,8 @@ function SelectDirective($mdSelect, $mdUtil, $mdTheming, $mdAria, $compile, $par containerCtrl.setFocused(true); } }) - .on('blur', function(ev) { + .on('blur', function() { + if (selectScope.isOpen) return; containerCtrl && containerCtrl.setFocused(false); inputCheckValue(); }); @@ -466,6 +461,7 @@ function SelectDirective($mdSelect, $mdUtil, $mdTheming, $mdAria, $compile, $par loadingAsync: attr.mdOnOpen ? scope.$eval(attr.mdOnOpen) || true : false }).finally(function() { selectScope.isOpen = false; + element.focus(); element.attr('aria-expanded', 'false'); ngModelCtrl.$setTouched(); }); diff --git a/src/components/select/select.spec.js b/src/components/select/select.spec.js index 9669fa6bc89..9b23ef97c6c 100755 --- a/src/components/select/select.spec.js +++ b/src/components/select/select.spec.js @@ -1,4 +1,4 @@ -describe('', function() { +fdescribe('', function() { var attachedElements = [], body; @@ -150,6 +150,23 @@ describe('', function() { //expect($document[0].activeElement).toBe(select[0]); })); + it('should remove the input-container focus state', inject(function($rootScope) { + $rootScope.val = 0; + var element = setupSelect('ng-model="val"', [1, 2, 3]); + var select = element.find('md-select'); + var controller = element.controller('mdInputContainer'); + controller.setHasValue(true); + + select.triggerHandler('focus'); + + expect(element.hasClass('md-input-focused')).toBe(true); + + select.triggerHandler('blur'); + + expect(element.hasClass('md-input-focused')).toBe(false); + + })); + describe('input container', function() { it('should set has-value class on container for non-ng-model input', inject(function($rootScope, $document) { var el = setupSelect('ng-model="$root.model"', [1, 2, 3]);