mourningdove/htdocs/js/6alib/checkallbutton.js

71 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2026-05-24 01:03:05 +00:00
/*
This is a class which you can attach to a checkbox element.
When that element is clicked, it will toggle every checkbox
with a specified classname to be the same as the checkbox that was
clicked.
$Id: checkallbutton.js 69 2006-07-14 22:38:26Z mischa $
*/
CheckallButton = new Class(Object, {
// opts:
// class => what class all of the checkboxes have
// button => the "check all" button element
// parent => [optional] only check boxes that are children of this element
init: function (opts) {
if ( CheckallButton.superClass.init ) {
CheckallButton.superClass.init.apply(arguments);
}
this.button = opts["button"];
this.className = opts["class"];
this.parent = opts["parent"];
this.attachEvents();
},
attachEvents: function () {
if (!this.button || !this.className)
return;
DOM.addEventListener(this.button, "click", this.buttonClicked.bindEventListener(this));
},
buttonClicked: function (e) {
if (!this.button || !this.className)
return;
var parent = this.parent;
if (!parent)
parent = document;
var viewObjects = parent.getElementsByTagName("*");
var boxes = DOM.filterElementsByClassName(viewObjects, this.className) || [];
var checkallBox = this.button;
for (var i = 0; i < boxes.length; i++) {
var box = boxes[i];
if (!box)
continue;
if (box.checked == checkallBox.checked) continue;
// send a "clicked" event to the checkbox
try {
// w3c
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, false, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
box.dispatchEvent(evt);
} catch (e) {
try {
// ie
box.click();
} catch (e2) { }
}
}
}
});