Skip to content

Commit 77de76b

Browse files
gibson042dmethvin
authored andcommitted
Fix #11145: Harden dispatch against a form-aliased "disabled" property
1 parent b6a2dfb commit 77de76b

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

src/event.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ jQuery.event = {
399399

400400
// Determine handlers that should run if there are delegated events
401401
// Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
402-
if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
402+
if ( delegateCount && event.target.disabled !== true && !(event.button && event.type === "click") ) {
403403

404404
// Pregenerate a single jQuery object for reuse with .is()
405405
jqcur = jQuery(this);

test/unit/event.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,25 +1213,38 @@ test("Delegated events in SVG (#10791)", function() {
12131213
svg.remove();
12141214
});
12151215

1216-
test("Delegated events in forms (#10844)", function() {
1217-
expect(1);
1216+
test("Delegated events in forms (#10844; #11145)", function() {
1217+
expect(2);
12181218

12191219
// Aliases names like "id" cause havoc
12201220
var form = jQuery(
12211221
'<form id="myform">'+
12221222
'<input type="text" name="id" value="secret agent man" />'+
12231223
'</form>'
1224-
).appendTo( "body" );
1225-
1226-
jQuery( "body" )
1224+
)
1225+
.on( "submit", function( event ) {
1226+
event.preventDefault();
1227+
})
1228+
.appendTo("body");
1229+
1230+
jQuery("body")
1231+
.on( "submit", "#myform", function() {
1232+
ok( true, "delegated id selector with aliased id" );
1233+
})
1234+
.find("#myform")
1235+
.trigger("submit")
1236+
.end()
1237+
.off("submit");
1238+
1239+
form.append('<input type="text" name="disabled" value="differently abled" />');
1240+
jQuery("body")
12271241
.on( "submit", "#myform", function() {
1228-
ok( true, "delegated id selector with aliased name" );
1229-
return false;
1242+
ok( true, "delegated id selector with aliased disabled" );
12301243
})
1231-
.find( "#myform" )
1232-
.trigger( "submit" )
1244+
.find("#myform")
1245+
.trigger("submit")
12331246
.end()
1234-
.off( "submit" );
1247+
.off("submit");
12351248

12361249
form.remove();
12371250
});

0 commit comments

Comments
 (0)