From ead836ad307f1530ce591789b5959acea7e786d8 Mon Sep 17 00:00:00 2001 From: TJ VanToll Date: Wed, 5 Mar 2014 16:14:32 -0500 Subject: [PATCH] Slider: Suppress the click events of disabled handles Fixes #9890 --- tests/unit/slider/slider_events.js | 17 +++++++++++++++++ ui/slider.js | 10 +++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/tests/unit/slider/slider_events.js b/tests/unit/slider/slider_events.js index ec93a056536..3285db91238 100644 --- a/tests/unit/slider/slider_events.js +++ b/tests/unit/slider/slider_events.js @@ -149,4 +149,21 @@ test( "mouse based interaction part two: when handles overlap", function() { }); +test( "Ensure default click action prevented on slider handles", function() { + expect( 2 ); + var isDefaultPrevented, + element = $( "#slider1" ) + .slider() + .bind( "click", "a", function( event ) { + isDefaultPrevented = event.isDefaultPrevented(); + }); + + element.find( "a" ).simulate( "click" ); + ok( isDefaultPrevented, "click event default prevented" ); + + element.slider( "option", "disabled", true ); + element.find( "a" ).simulate( "click" ); + ok( isDefaultPrevented, "also prevented on disabled sliders" ); +}); + })( jQuery ); diff --git a/ui/slider.js b/ui/slider.js index 6dac9067dd2..f6692515b50 100644 --- a/ui/slider.js +++ b/ui/slider.js @@ -152,6 +152,13 @@ return $.widget( "ui.slider", $.ui.mouse, { var elements = this.handles.add( this.range ).filter( "a" ); this._off( elements ); this._on( elements, this._handleEvents ); + + // Click events need to be suppressed on disabled sliders (see #9890) + this._on( true, elements, { + click: function( event ) { + event.preventDefault(); + } + }); this._hoverable( elements ); this._focusable( elements ); }, @@ -673,9 +680,6 @@ return $.widget( "ui.slider", $.ui.mouse, { this._slide( event, index, newVal ); }, - click: function( event ) { - event.preventDefault(); - }, keyup: function( event ) { var index = $( event.target ).data( "ui-slider-handle-index" );