]> source.dussan.org Git - jquery.git/commitdiff
Event: Fix delegated radio events when arrow keys are used
authorDave Methvin <dave.methvin@gmail.com>
Mon, 28 Sep 2015 02:05:57 +0000 (22:05 -0400)
committerRichard Gibson <richard.gibson@gmail.com>
Sun, 25 Oct 2015 19:07:50 +0000 (15:07 -0400)
Fixes gh-2343, gh-2410
Close gh-2617

(cherry picked from commit c82a6685bb964627e27008e298f93ea81218265b)

src/event.js
test/integration/gh-2343-ie-radio-click.html [new file with mode: 0644]

index e93a270931798fed21832f641e3e7ef4b2fbdd13..f7af220832dbdc89c6f6cc36051d4909993e47d3 100644 (file)
@@ -514,9 +514,10 @@ jQuery.event = {
                // Find delegate handlers
                // Black-hole SVG <use> instance trees (#13180)
                //
-               // Support: Firefox
-               // Avoid non-left-click bubbling in Firefox (#3861)
-               if ( delegateCount && cur.nodeType && ( !event.button || event.type !== "click" ) ) {
+               // Support: Firefox<=42+
+               // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
+               if ( delegateCount && cur.nodeType &&
+                       ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
 
                        /* jshint eqeqeq: false */
                        for ( ; cur != this; cur = cur.parentNode || this ) {
diff --git a/test/integration/gh-2343-ie-radio-click.html b/test/integration/gh-2343-ie-radio-click.html
new file mode 100644 (file)
index 0000000..4bc6956
--- /dev/null
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head lang="en">
+       <meta charset="UTF-8">
+       <meta http-equiv="X-UA-Compatible" content="IE=edge">
+       <title>Test for gh-2343 (IE11)</title>
+       <script src="../../dist/jquery.js"></script>
+       <script>
+               $(document).ready(function() {
+                       $( "fieldset" ).on( "click", "input", function() {
+                               $( ".result" ).append( "click " + this.value + "<br />" );
+                       } );
+               } );
+       </script>
+</head>
+
+<body>
+
+<h1>Test for gh-2343 (IE11)</h1>
+<p>
+Instructions: In <b>IE11</b>, click on or focus the first radio button.
+Then use the left/right arrow keys to select the other radios.
+You should see events logged in the results below.
+</p>
+<fieldset>
+       <input type="radio" name="rad" value="0" /> 0
+       <input type="radio" name="rad" value="1" /> 1
+       <input type="radio" name="rad" value="2" /> 2
+</fieldset>
+<div class="result"></div>
+
+</body>
+</html>