From cda5efa48799f0c138ce6b71f996d466bfcee6a3 Mon Sep 17 00:00:00 2001 From: Lars Laade Date: Fri, 23 May 2014 12:18:27 +0200 Subject: [PATCH] Core: Added radio/checkbox to delegate click-event Reverts the accidental change from d319a0da35e5bdd0adad7f2233ce5fdd15969c74, where these event handlers were dropped. Closes #1126 --- src/core.js | 2 +- test/test.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index 1768e8e..212b7e5 100644 --- a/src/core.js +++ b/src/core.js @@ -349,7 +349,7 @@ $.extend( $.validator, { "focusin focusout keyup", delegate) // Support: Chrome, oldIE // "select" is provided as event.target when clicking a option - .validateDelegate("select, option", "click", delegate); + .validateDelegate("select, option, [type='radio'], [type='checkbox']", "click", delegate); if ( this.settings.invalidHandler ) { $( this.currentForm ).bind( "invalid-form.validate", this.settings.invalidHandler ); diff --git a/test/test.js b/test/test.js index bc4d78b..9bc2a64 100644 --- a/test/test.js +++ b/test/test.js @@ -364,6 +364,37 @@ asyncTest("validation triggered on radio/checkbox when using keyboard", function }, 50); }); +asyncTest("validation triggered on radio/checkbox when using mouseclick", function() { + expect( 1 ); + var input, i, events, triggeredEvents = 0; + + $("#form").validate({ + onclick: function() { + triggeredEvents++; + } + }); + + events = [ + $.Event("click") + ]; + + input = $("#form :radio:first"); + for(i = 0; i < events.length; i++) { + input.trigger(events[i]); + } + + input = $("#form :checkbox:first"); + for(i = 0; i < events.length; i++) { + input.trigger(events[i]); + } + + setTimeout(function() { + // assert all event handlers fired + equal(2, triggeredEvents); + start(); + }, 50); +}); + test( "showErrors()", function() { expect( 4 ); var errorLabel = $( "#errorFirstname" ).hide(),