Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 2bb27d4

Browse files
Andreas Sanderpkozlowski-opensource
Andreas Sander
authored andcommitted
feat(directive): ng:focus, ng:blur
Added directives for focus and blur events. Closes #1277
1 parent 1a8d83d commit 2bb27d4

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

src/ng/directive/ngEventDirs.js

+31-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838
var ngEventDirectives = {};
3939
forEach(
40-
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit'.split(' '),
40+
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur'.split(' '),
4141
function(name) {
4242
var directiveName = directiveNormalize('ng-' + name);
4343
ngEventDirectives[directiveName] = ['$parse', function($parse) {
@@ -264,3 +264,33 @@ forEach(
264264
</doc:scenario>
265265
</doc:example>
266266
*/
267+
268+
/**
269+
* @ngdoc directive
270+
* @name ng.directive:ngFocus
271+
*
272+
* @description
273+
* Specify custom behavior on focus event.
274+
*
275+
* @element window, input, select, textarea, a
276+
* @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
277+
* focus. (Event object is available as `$event`)
278+
*
279+
* @example
280+
* See {@link ng.directive:ngClick ngClick}
281+
*/
282+
283+
/**
284+
* @ngdoc directive
285+
* @name ng.directive:ngBlur
286+
*
287+
* @description
288+
* Specify custom behavior on blur event.
289+
*
290+
* @element window, input, select, textarea, a
291+
* @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
292+
* blur. (Event object is available as `$event`)
293+
*
294+
* @example
295+
* See {@link ng.directive:ngClick ngClick}
296+
*/

test/ng/directive/ngKeySpec.js

+18
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,23 @@ describe('ngKeyup and ngKeydown directives', function() {
3434
expect($rootScope.touched).toEqual(true);
3535
}));
3636

37+
it('should get called on focus', inject(function($rootScope, $compile) {
38+
element = $compile('<input ng-focus="touched = true">')($rootScope);
39+
$rootScope.$digest();
40+
expect($rootScope.touched).toBeFalsy();
41+
42+
browserTrigger(element, 'focus');
43+
expect($rootScope.touched).toEqual(true);
44+
}));
45+
46+
it('should get called on blur', inject(function($rootScope, $compile) {
47+
element = $compile('<input ng-blur="touched = true">')($rootScope);
48+
$rootScope.$digest();
49+
expect($rootScope.touched).toBeFalsy();
50+
51+
browserTrigger(element, 'blur');
52+
expect($rootScope.touched).toEqual(true);
53+
}));
54+
3755
});
3856

0 commit comments

Comments
 (0)