Javascript复选框onChange

bik*_*y77 110 javascript checkbox

我在表单中有一个复选框,我希望它按照以下方案工作:

如果有人检查它,textfield(totalCost)的值应该设置为10.然后,如果我返回并取消选中它,函数会根据表单中的其他参数calculate()设置值totalCost.

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

Sen*_*kin 140

function calc()
{
  if (document.getElementById('xxx').checked) 
  {
      document.getElementById('totalCost').value = 10;
  } else {
      calculate();
  }
}
Run Code Online (Sandbox Code Playgroud)

HTML

<input type="checkbox" id="xxx" name="xxx" onclick="calc();"/>
Run Code Online (Sandbox Code Playgroud)

  • 如果用户使用键盘? (18认同)
  • 您应该改用 onchange,它是专门为 OP 的用例设计的。(感谢下面的 ReeCube 提供链接) developer.mozilla.org/en-US/docs/Web/Events/change (11认同)
  • [这里是一个JsFiddle](http://jsfiddle.net/wv97mpcp/),可以测试所有不同的方式:点击,键盘,标签和访问键.它们都在Firefox中触发事件. (5认同)
  • 不幸的是,当通过JavaScript更改复选框状态时,不会触发该事件。 (2认同)
  • 大声笑,使用javascript $('#checkbox').attr('checked','checked'); $( '#复选框')点击(). (2认同)

Vic*_*Vic 61

纯javascript:

const checkbox = document.getElementById('myCheckbox')

checkbox.addEventListener('change', (event) => {
  if (event.target.checked) {
    alert('checked');
  } else {
    alert('not checked');
  }
})
Run Code Online (Sandbox Code Playgroud)

HTML:

My Checkbox: <input id="myCheckbox" type="checkbox" />
Run Code Online (Sandbox Code Playgroud)

的jsfiddle:

https://jsfiddle.net/pfcymb4j/1/

  • 这应该是接受的回应 (6认同)

Lia*_*eng 28

如果您正在使用jQuery ..那么我可以建议以下内容:注意:我在这里做了一些假设

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


Ser*_*geS 19

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

  • 如果用户使用键盘怎么办? (23认同)
  • 这是一种策略,但仍然是点击 (14认同)
  • 确实点击工作,当你使用标签来切换复选框时,它甚至会被触发.但你应该更好地使用'改变'事件!'change'事件的目的是:https://developer.mozilla.org/en-US/docs/Web/Events/change (6认同)
  • 那么现在两次点击不是吗? (4认同)

Ali*_*eit 10

HTML:

<input type="checkbox" onchange="handleChange(event)">
Run Code Online (Sandbox Code Playgroud)

JS:

function handleChange(e) {
     const {checked} = e.target;
}
Run Code Online (Sandbox Code Playgroud)


Eug*_*ene 8

以下解决方案使用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
    }
});
Run Code Online (Sandbox Code Playgroud)


小智 5

通过其 id 引用复选框,而不是使用 # 将函数分配给 onclick 属性,而不是使用更改属性

var checkbox = $("save_" + fieldName);
checkbox.onclick = function(event) {
    var checkbox = event.target;

    if (checkbox.checked) {
        //Checkbox has been checked
    } else {
        //Checkbox has been unchecked
    }
};
Run Code Online (Sandbox Code Playgroud)