javascript - 选中复选框时启用提交按钮

标签 javascript

我尝试了一些在选中复选框时启用提交按钮的示例,但我无处可去。以下是我的尝试之一,在选中复选框之前,提交按钮处于禁用状态。请让我知道我错过了什么。

function checked(sub1) {
  var myLayer = document.getElementById(sub1);
  var input = myLayer.childNodes[0];
  if (input.checked == true) {
    myLayer.disabled = "";
  } else {
    myLayer.disabled = "disabled";
  }
}
<p style="color: #FF0000; font-weight: bold;">I have read and agree to the terms and conditions
  <input type="checkbox" id="termsChkbx " onchange="checked('sub1')" />
</p>

<p>
  <input type="submit" name="submit" value="Order now!" id="sub1" disabled="disabled" />
</p>

最佳答案

没有人解释为什么您的代码不起作用。

一方面,您没有选择 input复选框元素正确。它不是按钮元素的子节点。您可以通过传递 this 来获得对复选框的引用。在 onchange事件,或者您可以通过 event对象并通过 event.target 访问复选框元素属性(property):

例如:

<input type="checkbox" id="termsChkbx " onchange="isChecked(this, 'sub1')" />

然后您可以访问对更改事件触发的复选框元素的引用:
function isChecked(checkbox, sub1) {
  // checkbox
}

在更改了几件事后,它将按预期工作:
function isChecked(checkbox, sub1) {
    var button = document.getElementById(sub1);

    if (checkbox.checked === true) {
        button.disabled = "";
    } else {
        button.disabled = "disabled";
    }
}

但是,您可以简化代码并将其重写为:

Example Here
<input type="checkbox" id="termsChkbx " onchange="isChecked(this, 'sub1')" />
function isChecked(checkbox, sub1) {
    document.getElementById(sub1).disabled = !checkbox.checked;
}

作为旁注,我强烈建议使用不显眼的 JavaScript 并向元素添加事件监听器以避免内联 onchange事件:

Example Here
document.getElementById('termsChkbx').addEventListener('click', function (e) {
  document.getElementById('sub1').disabled = !e.target.checked;
});

关于javascript - 选中复选框时启用提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33973512/

相关文章:

javascript - 在 css/js : make links on mouse over (hover) shows what is in h1 中

javascript - 我应该在何时何地为 Redux 存储中的规范化数据使用 "fetchingData"状态?

javascript - 如何计算javascript中p标签中的单词数?

javascript - Apple/Safari 问题在移动设备上播放背景视频

javascript - 错误: cannot read property 'setState' on fetch method

javascript - 日期格式转换javascript

javascript - 当前元素前后具有相同类的所有元素的 CSS 选择器

javascript - react 类中不必要的构造函数

javascript - 如何在组件 DOM 节点上切换类

javascript - 无法使用命名空间 'ThemeDefinition' 作为 Vuetify 中的类型