Javascript 复选框 onChange

IT技术 javascript checkbox
2021-02-04 16:51:22

我在表单中有一个复选框,我希望它根据以下情况工作:

  • 如果有人检查它,则文本字段 ( totalCost)的值应设置为10
  • 然后,如果我返回并取消选中它,一个函数会根据表单中的其他参数calculate()设置 的值totalCost

所以基本上,我需要的部分是,当我选中复选框时,我会做一件事,当我取消选中它时,我会做另一件事。

6个回答
function calc()
{
  if (document.getElementById('xxx').checked) 
  {
      document.getElementById('totalCost').value = 10;
  } else {
      calculate();
  }
}

HTML

<input type="checkbox" id="xxx" name="xxx" onclick="calc();"/>
不幸的是,当通过 JavaScript 更改复选框状态时,不会触发该事件。
2021-03-18 16:51:22
大声笑,使用 javascript $('#checkbox').attr('checked','checked'); $('#checkbox').click();
2021-03-22 16:51:22
您应该改用 onchange,它是专门为 OP 的用例设计的。(感谢下面的 ReeCube 提供链接) developer.mozilla.org/en-US/docs/Web/Events/change
2021-03-22 16:51:22
如果用户使用键盘?
2021-04-05 16:51:22
这是一个 JsFiddle,可以测试所有不同的方式:点击、键盘、标签和访问键。它们都在 Firefox 中触发事件。
2021-04-07 16:51:22

纯javascript:

const checkbox = document.getElementById('myCheckbox')

checkbox.addEventListener('change', (event) => {
  if (event.currentTarget.checked) {
    alert('checked');
  } else {
    alert('not checked');
  }
})
My Checkbox: <input id="myCheckbox" type="checkbox" />

如果您使用的是 jQuery .. 那么我可以提出以下建议: 注意:我在这里做了一些假设

$('#my_checkbox').click(function(){
    if($(this).is(':checked')){
        $('input[name="totalCost"]').val(10);
    } else {
        calculate();
    }
});

使用 onclick 事件,因为每次单击复选框实际上都会改变它。

这很奇怪,但它仍然是点击
2021-03-20 16:51:22
如果用户使用键盘怎么办?
2021-03-24 16:51:22
嗯,现在是两次点击,不是吗?
2021-03-29 16:51:22
双击呢?
2021-04-06 16:51:22
确实单击有效,当您使用标签切换复选框时,它甚至会被触发。但是你最好使用'change'事件!'change' 事件用于:developer.mozilla.org/en-US/docs/Web/Events/change
2021-04-14 16:51:22

以下解决方案使用了 jquery。假设您有一个 ID 为 的复选框checkboxId

const checkbox = $("#checkboxId");

checkbox.change(function(event) {
    var checkbox = event.target;
    if (checkbox.checked) {
        //Checkbox has been checked
    } else {
        //Checkbox has been unchecked
    }
});