Reputation: 2337
I need to disable a radio button but still be able to tab through it. It seems that actually setting it to disabled takes it out of the tab rotation.
I have therefore done the following:
<input type="radio" class="appear-disabled" ng-keypress="suppressKeyboard($event)" name="contestedDataYes" ng-model= REDACTED.contestedData ng-value="'Y'" ng-checked="REDACTED.contestedData === 'Y'" aria-label="Yes"> Yes
<input type="radio" class="appear-disabled" ng-keypress="suppressKeyboard($event)" name="contestedDataNo" ng-model= REDACTED.contestedData ng-value="'N'" ng-checked="REDACTED.contestedData === 'N'" aria-label="No"> No
.appear-disabled {
opacity: .5;
pointer-events: none;
}
$scope.suppressKeyboard = function(event) {
var keyCode = event.keyCode;
// 32 = space, 13 = enter
if (keyCode == 13 || keyCode == 32) {
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
}
};
This makes the radio group appear (visually) to be disabled and prevents mouse clicks on the radio buttons but does not prevent tabbing onto a radio button and hitting space or enter to toggle it.
Why is the suppressKeyboard function not preventing the keyboard inputs?
Upvotes: 0
Views: 643
Reputation: 1354
Try change ng-keypress to ng-keydown
and in the function do this:
HTML
<input type="radio" class="appear-disabled" ng-keydown="suppressKeyboard($event)" name="contestedDataYes" ng-model= REDACTED.contestedData ng-value="'Y'" ng-checked="REDACTED.contestedData === 'Y'" aria-label="Yes"> Yes
<input type="radio" class="appear-disabled" ng-keydown="suppressKeyboard($event)" name="contestedDataNo" ng-model= REDACTED.contestedData ng-value="'N'" ng-checked="REDACTED.contestedData === 'N'" aria-label="No"> No
CONTROLLER
$scope.suppressKeyboard = function(event) {
var keyCode = event.keyCode;
// 32 = space, 13 = enter
if (keyCode == 13 || keyCode == 32) {
//event.preventDefault ? event.preventDefault() : (event.returnValue =
false);
event.preventDefault();
}
};
keydown
-> can be prevented -> fired when: press a key keypress
-> can be prevented -> fired when: hold a key keyup
-> can not be prevented -> fired when: release a keyUpvotes: 1