/* * * Copyright (c) 2006-2008 Sam Collett (http://www.texotela.co.uk) * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. * * Version 2.0.1 * Demo: http://www.texotela.co.uk/code/jquery/checkboxes/ * * $LastChangedDate: 2008-02-12 17:34:52 +0000 (Tue, 12 Feb 2008) $ * $Rev: 4734 $ */ /* * Toggle all checkboxes contained within a form * * @name toggleCheckboxes * @param filter only toggle checkboxes matching this expression * @param returnChecked return checkboxes as jQuery object, default false * @author Sam Collett (http://www.texotela.co.uk) * @example $("#myform").toggleCheckboxes(); * @example $("#myform").toggleCheckboxes(".onlyme"); * @example $("#myform").toggleCheckboxes(":not(.notme)"); * @example $("#myform").toggleCheckboxes("*", true); * */ jQuery.fn.toggleCheckboxes = function(filter, returnChecked) { filter = filter || "*"; returnChecked = returnChecked || false; var returnWhat = jQuery([]); this.each( function() { var checked = jQuery("input[@type=checkbox]", this).filter(filter).each( function() { this.checked = !this.checked; } ).filter(":checked"); returnWhat = checked; } ); if(!returnChecked) { returnWhat = this; } return returnWhat; }; /* * Check all checkboxes contained within a form * * @name checkCheckboxes * @param filter only check checkboxes matching this expression * @param returnChecked return checkboxes as jQuery object, default false * @author Sam Collett (http://www.texotela.co.uk) * @example $("#myform").checkCheckboxes(); * @example $("#myform").checkCheckboxes(".onlyme"); * @example $("#myform").checkCheckboxes(":not(.notme)"); * @example $("#myform").checkCheckboxes("*", true); * */ jQuery.fn.checkCheckboxes = function(filter, returnChecked) { filter = filter || "*"; returnChecked = returnChecked || false; var returnWhat = jQuery([]); this.each( function() { var checked = jQuery("input[@type=checkbox]", this).filter(filter).each( function() { this.checked = true; } ).filter(":checked"); returnWhat = checked; } ); if(!returnChecked) { returnWhat = this; } return returnWhat; }; /* * UnCheck all checkboxes contained within a form * * @name unCheckCheckboxes * @param filter only check checkboxes matching this expression * @param returnUnChecked return unchecked checkboxes as jQuery object, default false * @author Sam Collett (http://www.texotela.co.uk) * @example $("#myform").unCheckCheckboxes(); * @example $("#myform").unCheckCheckboxes(".onlyme"); * @example $("#myform").unCheckCheckboxes(":not(.notme)"); * @example $("#myform").unCheckCheckboxes("*", true); * */ jQuery.fn.unCheckCheckboxes = function(filter, returnUnChecked) { filter = filter || "*"; returnUnChecked = returnUnChecked || false; var returnWhat = jQuery([]); this.each( function() { var unChecked = jQuery("input[@type=checkbox]", this).filter(filter).each( function() { this.checked = false; } ).filter(":not(:checked)"); returnWhat = unChecked; } ); if(!returnUnChecked) { returnWhat = this; } return returnWhat; }; /* * Makes checkboxes behave like a radio button group * i.e. only one can be selected at a time * * @name radioCheckboxGroup * @param name field name (leave blank to apply to all check boxes) * @param filter apply to checkboxes matching this expression * @author Sam Collett (http://www.texotela.co.uk) * @example $.radioCheckboxGroup("fieldname"); * @example $.radioCheckboxGroup("fieldname", ".myclass"); * @example $.radioCheckboxGroup("", ".myclass"); * */ jQuery.radioCheckboxGroup = function(name, filter) { filter = filter || "*"; var expression = "input[@type=checkbox]"; if(name) { expression += "[@name=" + name + "]" } var x = jQuery(expression).filter(filter); x.click( function() { // uncheck every other box with the same name x.not(this).each( function() { this.checked = false; } ).end(); } ); };