Fix #11145: Harden dispatch against a form-aliased "disabled" property

This commit is contained in:
Richard Gibson 2012-01-11 21:56:18 -05:00 committed by Dave Methvin
parent b6a2dfbeb9
commit 77de76b942
2 changed files with 25 additions and 12 deletions

View File

@ -399,7 +399,7 @@ jQuery.event = {
// Determine handlers that should run if there are delegated events
// Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
if ( delegateCount && event.target.disabled !== true && !(event.button && event.type === "click") ) {
// Pregenerate a single jQuery object for reuse with .is()
jqcur = jQuery(this);

View File

@ -1213,25 +1213,38 @@ test("Delegated events in SVG (#10791)", function() {
svg.remove();
});
test("Delegated events in forms (#10844)", function() {
expect(1);
test("Delegated events in forms (#10844; #11145)", function() {
expect(2);
// Aliases names like "id" cause havoc
var form = jQuery(
'<form id="myform">'+
'<input type="text" name="id" value="secret agent man" />'+
'</form>'
).appendTo( "body" );
jQuery( "body" )
.on( "submit", "#myform", function() {
ok( true, "delegated id selector with aliased name" );
return false;
)
.on( "submit", function( event ) {
event.preventDefault();
})
.find( "#myform" )
.trigger( "submit" )
.appendTo("body");
jQuery("body")
.on( "submit", "#myform", function() {
ok( true, "delegated id selector with aliased id" );
})
.find("#myform")
.trigger("submit")
.end()
.off( "submit" );
.off("submit");
form.append('<input type="text" name="disabled" value="differently abled" />');
jQuery("body")
.on( "submit", "#myform", function() {
ok( true, "delegated id selector with aliased disabled" );
})
.find("#myform")
.trigger("submit")
.end()
.off("submit");
form.remove();
});