aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2012-01-12 09:05:40 -0500
committerScott González <scott.gonzalez@gmail.com>2012-01-12 09:05:40 -0500
commit069c6454032424ed82a3f6024248be83a4be565b (patch)
tree6b80d23ec4d36edc40a6d0c4706ef0af961d479c
parentead7e92a542a7e2b7532cb2c0c54026cd5cd7a55 (diff)
downloadjquery-ui-069c6454032424ed82a3f6024248be83a4be565b.tar.gz
jquery-ui-069c6454032424ed82a3f6024248be83a4be565b.zip
Tests (Simulate): Added focus and blur support.
(cherry picked from commit e31adf039b4adb07b8878435beceaae1a6532d47) Conflicts: tests/unit/autocomplete/autocomplete_events.js tests/unit/tooltip/tooltip_events.js
-rw-r--r--tests/jquery.simulate.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/jquery.simulate.js b/tests/jquery.simulate.js
index 9713a3038..c1d28f982 100644
--- a/tests/jquery.simulate.js
+++ b/tests/jquery.simulate.js
@@ -24,6 +24,8 @@ $.simulate = function( el, type, options ) {
if ( type === "drag" ) {
this[ type ].apply( this, [ this.target, options ] );
+ } else if ( type === "focus" || type === "blur" ) {
+ this[ type ]();
} else {
this.simulateEvent( el, type, options );
}
@@ -157,6 +159,53 @@ $.extend( $.simulate.prototype, {
x: o.left + el.outerWidth() / 2 - d.scrollLeft(),
y: o.top + el.outerHeight() / 2 - d.scrollTop()
};
+ },
+
+ focus: function() {
+ var focusinEvent,
+ triggered = false,
+ element = $( this.target );
+
+ function trigger() {
+ triggered = true;
+ }
+
+ element.bind( "focus", trigger );
+ element[ 0 ].focus();
+
+ if ( !triggered ) {
+ focusinEvent = $.Event( "focusin" );
+ focusinEvent.preventDefault();
+ element.trigger( focusinEvent );
+ element.triggerHandler( "focus" );
+ }
+ element.unbind( "focus", trigger );
+ },
+
+ blur: function() {
+ var focusoutEvent,
+ triggered = false,
+ element = $( this.target );
+
+ function trigger() {
+ triggered = true;
+ }
+
+ element.bind( "blur", trigger );
+ element[ 0 ].blur();
+
+ // Some versions of IE don't actually .blur() on an element - so we focus the body
+ if ( element[ 0 ].ownerDocument.activeElement === element[ 0 ] ) {
+ element[ 0 ].ownerDocument.body.focus();
+ }
+
+ if ( !triggered ) {
+ focusoutEvent = $.Event( "focusout" );
+ focusoutEvent.preventDefault();
+ element.trigger( focusoutEvent );
+ element.triggerHandler( "blur" );
+ }
+ element.unbind( "blur", trigger );
}
});