I have been asked to disable the \"ticking\" of a checkbox. I am not being asked to disable the checkbox, but to simply disable the \"ticking\".
In other w
The Event.preventDefault
method should work for change
, keydown
, and mousedown
events, but doesn't in my testing.
My solution to this problem in a Mozilla Firefox 53.0 extension was to toggle an HTML class that enabled/disabled the CSS declaration pointer-events: none
being applied to the checkbox. This addresses the cursor-based case, but not the key-based case. See https://www.w3.org/TR/SVG2/interact.html#PointerEventsProp.
I addressed the key-based case by adding/removing an HTML tabindex="-1"
attribute. See https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex.
Note that disabling pointer-events
will disable your ability to trigger CSS cursors on hover (e.g., cursor: not-allowed
). My checkbox was already wrapped in a span
element, so I added an HTML class to that span
element which I then retargeted my CSS cursor
declaration onto.
Also note that adding a tabindex="-1"
attribute will not remove focus from the checkbox, so one will need to explicitly defocus it by using the HTMLElement.blur()
method or by focusing another element to prevent key-based input if the checkbox is the active element at the time the attribute is added. Whether or not the checkbox is the focused element can be tested with my_checkbox.isEqualNode(document.activeElement)
.