diff options
Diffstat (limited to 'resources/jquery/jquery.checkboxShiftClick.js')
-rw-r--r-- | resources/jquery/jquery.checkboxShiftClick.js | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/resources/jquery/jquery.checkboxShiftClick.js b/resources/jquery/jquery.checkboxShiftClick.js index 1990dc0d..b2065665 100644 --- a/resources/jquery/jquery.checkboxShiftClick.js +++ b/resources/jquery/jquery.checkboxShiftClick.js @@ -1,23 +1,31 @@ /** * jQuery checkboxShiftClick * - * This will enable checkboxes to be checked or unchecked in a row by clicking one, holding shift and clicking another one + * This will enable checkboxes to be checked or unchecked in a row by clicking one, + * holding shift and clicking another one. * - * @author Krinkle <krinklemail@gmail.com> + * @author Timo Tijhof, 2011 - 2012 * @license GPL v2 */ ( function ( $ ) { - $.fn.checkboxShiftClick = function ( text ) { - var prevCheckbox = null, $box = this; + $.fn.checkboxShiftClick = function () { + var prevCheckbox = null, + $box = this; // When our boxes are clicked.. $box.click( function ( e ) { // And one has been clicked before... if ( prevCheckbox !== null && e.shiftKey ) { - // Check or uncheck this one and all in-between checkboxes - $box.slice( - Math.min( $box.index( prevCheckbox ), $box.index( e.target ) ), - Math.max( $box.index( prevCheckbox ), $box.index( e.target ) ) + 1 - ).prop( 'checked', !!e.target.checked ); + // Check or uncheck this one and all in-between checkboxes, + // except for disabled ones + $box + .slice( + Math.min( $box.index( prevCheckbox ), $box.index( e.target ) ), + Math.max( $box.index( prevCheckbox ), $box.index( e.target ) ) + 1 + ) + .filter( function () { + return !this.disabled; + } ) + .prop( 'checked', !!e.target.checked ); } // Either way, update the prevCheckbox variable to the one clicked now prevCheckbox = e.target; |