diff --git a/src/components/autocomplete/autocomplete.spec.js b/src/components/autocomplete/autocomplete.spec.js index 1181542bc01..a4e9e646b2d 100644 --- a/src/components/autocomplete/autocomplete.spec.js +++ b/src/components/autocomplete/autocomplete.spec.js @@ -278,6 +278,36 @@ describe('', function() { element.remove(); })); + it('should forward focus to the input element with md-autofocus', inject(function($timeout) { + + var scope = createScope(); + + var template = + '' + + ' {{item.display}}' + + ''; + + var element = compile(template, scope); + var input = element.find('input'); + + document.body.appendChild(element[0]); + + // Initial timeout for gathering elements + $timeout.flush(); + + element.triggerHandler('focus'); + + expect(document.activeElement).toBe(input[0]); + + element.remove(); + })); + it('allows using an empty readonly attribute', inject(function() { var scope = createScope(null, {inputId: 'custom-input-id'}); var template = '\ diff --git a/src/components/autocomplete/demoInsideDialog/dialog.tmpl.html b/src/components/autocomplete/demoInsideDialog/dialog.tmpl.html index 03017213dcb..517a27990ae 100644 --- a/src/components/autocomplete/demoInsideDialog/dialog.tmpl.html +++ b/src/components/autocomplete/demoInsideDialog/dialog.tmpl.html @@ -19,7 +19,8 @@

Autocomplete Dialog Example

md-items="item in ctrl.querySearch(ctrl.searchText)" md-item-text="item.display" md-min-length="0" - placeholder="What is your favorite US state?"> + placeholder="What is your favorite US state?" + md-autofocus=""> {{item.display}} diff --git a/src/components/autocomplete/js/autocompleteController.js b/src/components/autocomplete/js/autocompleteController.js index c2e7278bf1b..8e01946d82e 100644 --- a/src/components/autocomplete/js/autocompleteController.js +++ b/src/components/autocomplete/js/autocompleteController.js @@ -70,10 +70,14 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, $mdTheming($element); configureWatchers(); $mdUtil.nextTick(function () { + gatherElements(); moveDropdown(); - focusElement(); - $element.on('focus', focusElement); + + // Forward all focus events to the input element when autofocus is enabled + if ($scope.autofocus) { + $element.on('focus', focusInputElement); + } }); } @@ -166,8 +170,8 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, /** * Sends focus to the input element. */ - function focusElement () { - if ($scope.autofocus) elements.input.focus(); + function focusInputElement () { + elements.input.focus(); } /**