A simple function like the following could be useful.
function checkButtonState() {
let input = document.querySelectorAll('input[type="radio"]');
let readInput = () => {
let button = document.querySelector('button');
document.querySelector('input[type="radio"]:checked') && document.querySelector('input[type="radio"]:checked').value == 2 ? button.removeAttribute('disabled') : button.setAttribute('disabled', true);
}
readInput();
input.forEach((v) => {
v.addEventListener('click', readInput);
});
}
You can try out, the button will be enabled only when the second radio button is checked:
function checkButtonState() {
let input = document.querySelectorAll('input[type="radio"]');
let readInput = () => {
let button = document.querySelector('button');
document.querySelector('input[type="radio"]:checked') && document.querySelector('input[type="radio"]:checked').value == 2 ? button.removeAttribute('disabled') : button.setAttribute('disabled', true);
}
readInput();
input.forEach((v) => {
v.addEventListener('click', readInput);
});
}
checkButtonState();
<form action="url" method="post">
<input name="id" type="radio" value="1">
<input name="id" type="radio" value="2">
<button type="submit">Submit</button>
</form>
Additionally you could pass the value of the radio in the function arguments.
function checkButtonState(value) {
let input = document.querySelectorAll('input[type="radio"]');
let readInput = () => {
let button = document.querySelector('button');
document.querySelector('input[type="radio"]:checked') && document.querySelector('input[type="radio"]:checked').value == value ? button.removeAttribute('disabled') : button.setAttribute('disabled', true);
}
readInput();
input.forEach((v) => {
v.addEventListener('click', readInput);
});
}