mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Tests (Simulate): Added focus and blur support.
This commit is contained in:
parent
79105eeb56
commit
e31adf039b
@ -24,6 +24,8 @@ $.simulate = function( el, type, options ) {
|
|||||||
|
|
||||||
if ( type === "drag" ) {
|
if ( type === "drag" ) {
|
||||||
this[ type ].apply( this, [ this.target, options ] );
|
this[ type ].apply( this, [ this.target, options ] );
|
||||||
|
} else if ( type === "focus" || type === "blur" ) {
|
||||||
|
this[ type ]();
|
||||||
} else {
|
} else {
|
||||||
this.simulateEvent( el, type, options );
|
this.simulateEvent( el, type, options );
|
||||||
}
|
}
|
||||||
@ -157,6 +159,53 @@ $.extend( $.simulate.prototype, {
|
|||||||
x: o.left + el.outerWidth() / 2 - d.scrollLeft(),
|
x: o.left + el.outerWidth() / 2 - d.scrollLeft(),
|
||||||
y: o.top + el.outerHeight() / 2 - d.scrollTop()
|
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 );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -62,15 +62,13 @@ $.each([
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
menu = element.autocomplete( "widget" );
|
menu = element.autocomplete( "widget" );
|
||||||
|
|
||||||
element.focus()[ settings.valueMethod ]( "j" ).keydown();
|
element.simulate( "focus" )[ settings.valueMethod ]( "j" ).keydown();
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
ok( menu.is( ":visible" ), "menu is visible after delay" );
|
ok( menu.is( ":visible" ), "menu is visible after delay" );
|
||||||
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
|
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
|
||||||
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
|
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
|
||||||
// blurring through jQuery causes a bug in IE 6 which causes the
|
element.simulate( "blur" );
|
||||||
// autocompletechange event to occur twice
|
|
||||||
element[0].blur();
|
|
||||||
}, 50 );
|
}, 50 );
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -59,7 +59,7 @@ asyncTest( "mixed events", function() {
|
|||||||
element.one( "tooltipopen", function( event ) {
|
element.one( "tooltipopen", function( event ) {
|
||||||
same( event.originalEvent.type, "focusin" );
|
same( event.originalEvent.type, "focusin" );
|
||||||
});
|
});
|
||||||
element[0].focus();
|
element.simulate( "focus" );
|
||||||
|
|
||||||
element.one( "tooltipopen", function() {
|
element.one( "tooltipopen", function() {
|
||||||
ok( false, "open triggered while already open" );
|
ok( false, "open triggered while already open" );
|
||||||
@ -77,7 +77,7 @@ asyncTest( "mixed events", function() {
|
|||||||
same( event.originalEvent.type, "blur" );
|
same( event.originalEvent.type, "blur" );
|
||||||
start();
|
start();
|
||||||
});
|
});
|
||||||
element[0].blur();
|
element.simulate( "blur" );
|
||||||
});
|
});
|
||||||
|
|
||||||
}( jQuery ) );
|
}( jQuery ) );
|
||||||
|
Loading…
Reference in New Issue
Block a user