[英]Disable button if radio is unchecked. Enable when checked
I can't seem to get my button to re-enable after it's been disabled.我的按钮在禁用后似乎无法重新启用。 Currently, if nothing is checked and I mouseover it, the button disables.
目前,如果没有检查任何内容并且我将鼠标悬停在它上面,则该按钮将被禁用。 It stays enabled if I have something checked, but if I first hover over then button, with nothing checked, I can't get it to re-enable if I check something.
如果我检查了某些内容,它会保持启用状态,但是如果我首先将鼠标悬停在然后按钮上,没有选中任何内容,如果我检查某些内容,我将无法重新启用它。
Here's My JS:这是我的JS:
var inputs = document.getElementsByTagName('input');
var letsCookButton = document.querySelector('#letsCook');
letsCookButton.addEventListener('mouseover', checkIfChecked);
function checkIfChecked() {
letsCookButton.disabled = true;
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].checked) {
letsCookButton.disabled = false;
}
}
}
Here's my HTML:这是我的 HTML:
div class="mainBox" id="box-one">
<p id="left-box-title">What are you looking for?<span>*</span></p>
<ul>
<li><input type="radio" name="food" id="side-food"> Side</li>
<li><input type="radio" name="food" id="main-food"> Main Dish</li>
<li><input type="radio" name="food" id="dessert-food"> Dessert</li>
<li><input type="radio" name="food" id="entire-meal"> Entire Meal</li>
</ul>
<button id="letsCook">LET'S COOK!</button>
</div>
You will have to slightly rethink how you want the UX of your app to work, because disabled elements do not produce events .您将不得不稍微重新考虑您希望应用程序的 UX 如何工作,因为禁用的元素不会产生事件。
Since at least one radio button will remain checked after the first click, I would suggest disabling the button from the start and then enabling it on a radio click event.由于在第一次单击后至少有一个单选按钮将保持选中状态,我建议从一开始就禁用该按钮,然后在单选单击事件上启用它。
<div class="mainBox" id="box-one">
<p id="left-box-title">What are you looking for?<span>*</span></p>
<ul id="radio-group">
<li><input type="radio" name="food" id="side-food"> Side</li>
<li><input type="radio" name="food" id="main-food"> Main Dish</li>
<li><input type="radio" name="food" id="dessert-food"> Dessert</li>
<li><input type="radio" name="food" id="entire-meal"> Entire Meal</li>
</ul>
<button id="letsCook" disabled>LET'S COOK!</button>
</div>
var inputGroup = document.querySelector('#radio-group');
var letsCookButton = document.querySelector('#letsCook');
inputGroup.addEventListener('click', function () {
letsCookButton.removeAttribute('disabled')
});
Working example in JS Fiddle: https://jsfiddle.net/Ollie1700/wxn9f63p/4/ JS Fiddle 中的工作示例: https : //jsfiddle.net/Ollie1700/wxn9f63p/4/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.