Skip to content

Radiobutton & Checkbox

Methods

For convenience sake these methods work with any of these 3 namespaces: Radiocheck, Radiobutton and Checkbox. It doesn't matter to me, but for your own sanity, you'll likely want to use Radiobutton for radiobuttons and Checkbox for checkboxes... or the more neutral Radiocheck for either. Choice is yours.

toggle()

SDB.Radiocheck.toggle( element );  // Toggles a radiobutton/checkbox

check()

SDB.Radiocheck.check( element );   // Checks a radiobutton/checkbox

uncheck()

SDB.Radiocheck.uncheck( element ); // Unchecks a radiobutton/checkbox

checked()

SDB.Radiocheck.checked( element ); // Returns a radiobutton/checkbox state (boolean)

value()

SDB.Radiocheck.value( element );   // Exactly the same as the method above

onCheck eventListener

Despite the name, it's not just for "checking" but for "unchecking" too.

element.addEventListener("onCheck", function(e) {
  console.log( e.target );
  console.log( e.detail );
});

Real world examples

Check it real good

Check a radiobutton or checkbox. It doesn't matter which of these you use.

SDB.Radiocheck.check( SDB.id(1) );
SDB.Radiobutton.check( SDB.id(1) );
SDB.Checkbox.check( SDB.id(1) );

Fetch all checked checkboxes.

No need for > .padding-box > if you're not worried of nesting.

selectAll('[data-item-name="panelOfJudges"] > .padding-box > [data-item-type="checkbox"] .radiocheck.checked');

Check another item onCheck

Toggle another checkbox when onCheck event is triggered

SDB.id(1).addEventListener("onCheck", function() {
  SDB.Radiocheck.toggle( SDB.id(2) );
});

Disable checkbox

SDB.disable( 1 );

HTML structure

Radiobuttons and Checkboxes have a child element with the class .radiocheck + .checkbox or .radiobutton. So don't try to select either with just the class .radiobutton or .checkbox. Use [data-item-id] or [data-item-type] with or without the class.

Checkbox

The HTML might be slightly cleaned up to make it easier to to read.

<div class="checkbox" data-item-type="checkbox" data-item-id="8" data-item-parent-id="1">
  <div class="radiocheck checkbox on checked"><svg></svg></div>
  <label>Reverse Page Order</label>
</div>

Radiobutton

The HTML might be slightly cleaned up to make it easier to to read.

<div class="radiobutton" data-item-type="radiobutton" data-item-id="22" data-item-parent-id="0">
  <div class="radiocheck radiobutton on checked"><svg></svg></div>
  <label>RadioButton</label>
</div>