disabled state for custom check boxes and/or radio buttons

Under certain circumstances, I would like to disable my check boxes and/or radio buttons in an exam.


When I use the default cb/rb and set to disabled: the image appears grey is unclickable, still shows the user's selection.


When I use custom cb/rb from the test&survey menu: disabled state will prevent clicking but it doesn't change the appearance & the mouse still switches to the pointy finger.


I've tried modifying the appearance using js/css but so far haven't had any luck.


I'm open to any suggestions on how to get this to work. 🙂


Discussion (3)

Here is a website that has some great CSS for custom Checkbox Buttons

https://css-tricks.com/the-checkbox-hack/

There is even state for Disabled.

Thank you for sharing the website. I didn't use the content from here but it did make me reconsider how I was approaching checkboxes. Now instead of the built-in Lectora custom checkboxes (which are actually images) I've taken control and fully customized them with CSS (& a little bit of help from ChatGPT). Now they are looking and working exactly how I want them to.

Here is my css solution in case it may be helpful to anyone else:

/* Common styles for both checkboxes and radio buttons */
input[type="checkbox"], input[type="radio"] {
    width: 20px;
    height: 20px;
    margin-right: 10px;
    cursor: pointer;


    /* Remove default appearance */
    appearance: none;
    background-color: #fff;
    border: 2px solid #333;
    position: relative;
    transition: border-color 0.3s ease;
}


/* Specific shape for checkboxes (square) */
input[type="checkbox"] {
    border-radius: 4px;
}


/* Specific shape for radio buttons (circle) */
input[type="radio"] {
    border-radius: 50%;
}


/* Add a smaller teal box centered inside the checkbox/radio */
input[type="checkbox"]:checked::before, input[type="radio"]:checked::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 12px; /* Smaller box size */
    height: 12px;
    background-color: #6CBDB6; /* teal fill */
    transform: translate(-50%, -50%); /* Center the box horizontally and vertically */
    transition: background-color 0.3s ease, transform 0.3s ease;
}


/* For radio button, keep the smaller box circular */
input[type="radio"]:checked::before {
    border-radius: 50%;
}


/* Optional: hover state */
input[type="checkbox"]:hover, input[type="radio"]:hover {
    border-color: #888;
}


/* Optional: focus state 
input[type="checkbox"]:focus, input[type="radio"]:focus {
    outline: 2px solid #007bff;
} */




/* Disabled state */
input[type="checkbox"]:disabled, input[type="radio"]:disabled {
    background-color: #e0e0e0;
    border-color: #CCC;
    cursor: not-allowed;
}


/* Keep the smaller teal box visible for disabled and selected state */
input[type="checkbox"]:disabled:checked::before, input[type="radio"]:disabled:checked::before {
    background-color: #95A9A7;
}