diff --git a/src/typeahead/test/typeahead.spec.js b/src/typeahead/test/typeahead.spec.js index 850215e5ae..825b008738 100644 --- a/src/typeahead/test/typeahead.spec.js +++ b/src/typeahead/test/typeahead.spec.js @@ -202,7 +202,7 @@ describe('typeahead tests', function() { it('should support changing min-length', function() { - $scope.typeAheadMinLength = 2; + $scope.typeAheadMinLength = 2; var element = prepareInputEl('
'); changeInputValueTo(element, 'b'); @@ -299,6 +299,22 @@ describe('typeahead tests', function() { expect(inputEl.val()).toEqual(''); }); + it('should clear errors after blur for typeahead-editable="false"', function () { + var element = prepareInputEl( + '
' + + '' + + '
'); + var inputEl = findInput(element); + + changeInputValueTo(element, 'not in matches'); + expect($scope.result).toEqual(undefined); + expect(inputEl.val()).toEqual('not in matches'); + inputEl.blur(); + + expect($scope.form.input.$error.editable).toBeFalsy(); + expect($scope.form.input.$error.parse).toBeFalsy(); + }); + it('should clear view value when no value selected for typeahead-editable="false" typeahead-select-on-blur="false"', function () { var element = prepareInputEl('
'); var inputEl = findInput(element); diff --git a/src/typeahead/typeahead.js b/src/typeahead/typeahead.js index f364bcee81..14169c6371 100644 --- a/src/typeahead/typeahead.js +++ b/src/typeahead/typeahead.js @@ -442,6 +442,9 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap } if (!isEditable && modelCtrl.$error.editable) { modelCtrl.$viewValue = ''; + // Reset validity as we are clearing + modelCtrl.$setValidity('editable', true); + modelCtrl.$setValidity('parse', true); element.val(''); } hasFocus = false;