summaryrefslogtreecommitdiff
path: root/resources/jquery/jquery.checkboxShiftClick.js
blob: 0a1d7d7d139edcb9413b0df1618c2c7383118c7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
 * jQuery checkboxShiftClick
 *
 * 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>
 * @license GPL v2
 */
( function( $ ) {
$.fn.checkboxShiftClick = function( text ) {
	var prevCheckbox = null;
	var $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 ? true : false );
		}
		// Either way, update the prevCheckbox variable to the one clicked now
		prevCheckbox = e.target;
	} );
	return $box;
};
} )( jQuery );