From: Dave Methvin Date: Wed, 7 Sep 2011 15:30:22 +0000 (-0400) Subject: Fix #10208. Check for `button` as well as `input` when performing the #7071 VML crash... X-Git-Tag: 1.6.4rc1~1^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=81c778b2cad268a6208544ae32d2ad5b023051a0;p=jquery.git Fix #10208. Check for `button` as well as `input` when performing the #7071 VML crash workaround for IE special-events submit code. --- diff --git a/src/event.js b/src/event.js index 9ff6fae83..1161386fd 100644 --- a/src/event.js +++ b/src/event.js @@ -702,8 +702,9 @@ if ( !jQuery.support.submitBubbles ) { setup: function( data, namespaces ) { if ( !jQuery.nodeName( this, "form" ) ) { jQuery.event.add(this, "click.specialSubmit", function( e ) { + // Avoid triggering error on non-existent type attribute in IE VML (#7071) var elem = e.target, - type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { trigger( "submit", this, arguments ); @@ -712,7 +713,7 @@ if ( !jQuery.support.submitBubbles ) { jQuery.event.add(this, "keypress.specialSubmit", function( e ) { var elem = e.target, - type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { trigger( "submit", this, arguments ); diff --git a/test/unit/event.js b/test/unit/event.js index 4e475da06..c69ba8339 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -1633,7 +1633,7 @@ test("live with change", function(){ }); test("live with submit", function() { - expect(5); + expect(7); var count1 = 0, count2 = 0; @@ -1659,6 +1659,10 @@ test("live with submit", function() { equals( count1, 2, "Verify form submit." ); equals( count2, 2, "Verify body submit." ); + jQuery("#testForm button[name=sub4]")[0].click(); + equals( count1, 3, "Verify form submit." ); + equals( count2, 3, "Verify body submit." ); + jQuery("#testForm").die("submit"); jQuery("#testForm input[name=sub1]").die("click"); jQuery("body").die("submit");