 			$input = element.find "input"
 
 			# we don't use ng-blur to make sure typeahead can have a custom ng-blur too
-			$input[0].addEventListener "blur", -> hideList()
+			$input[0].addEventListener "blur", ->
+				needHide = true
+				$timeout ->
+					hideList() if needHide
+				, 150
 
 			$timeout ->
 				$ul = element.find "ul"

				currentEl.className += " active" if currentEl
				null
			select = (el) ->
				$timeout ->
					$input.val(el.innerHTML).triggerHandler("input")
					hideList()
				null
			scope.typeaheadKeydown = (evt) ->
				switch evt.which

						currentEl.className = "show" if currentEl
						currentEl = null
				null
			scope.typeaheadSelect = (evt) ->
				needHide = false
				select evt.target
			scope.typeaheadKeyup =(evt) ->
				return if evt.which in [38, 40, 16, 32, 13, 27]
				# we don't use ng-model (scope.term) here, because it might have been overwritten
