Javascript 单击复选框时,如何知道复选框的状态

Javascript 单击复选框时,如何知道复选框的状态,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,编辑: 请阅读文章的结尾部分,我知道告诉哪些未选中的部分需要在代码块内,这里的问题是代码的第一部分没有注册“单击”。所以没有这个我什么都做不了 E2:我可以建议在框中添加onclick,因为框的代码是用JS生成的,我会添加一次,所有的框都会得到函数调用,但这感觉有点难看 我有一组复选框,单击其中一个复选框时,我需要返回未选中复选框的值。 HTML: 我也尝试过在代码中添加这一点 $boxes = $('input[name=myList]:not(:checked)'); $boxes.each

编辑: 请阅读文章的结尾部分,我知道告诉哪些未选中的部分需要在代码块内,这里的问题是代码的第一部分没有注册“单击”。所以没有这个我什么都做不了

E2:我可以建议在框中添加onclick,因为框的代码是用JS生成的,我会添加一次,所有的框都会得到函数调用,但这感觉有点难看

我有一组复选框,单击其中一个复选框时,我需要返回未选中复选框的值。 HTML:

我也尝试过在代码中添加这一点

$boxes = $('input[name=myList]:not(:checked)');
$boxes.each(function(){
    // Do stuff with for each unchecked box
});

不幸的是,没有将输出输出到控制台中的“触发”,因此不确定为什么会这样,当选中复选框时,我如何使事件发生最简单的方法是:

let v = $(this).attr('value');
if(v === 1){ // box 1 selected
在您的
'click'
处理程序中添加此项应该可以工作。

尝试如下操作:

$(函数(){
$(“输入[name=myList]”)。在(“单击”,函数()上){
var uncheck=[];
//控制台日志(“已触发”);
//在此处编码以查找未选中的项目
$box=$(“输入[name=myList]:未选中)”;
$box.每个(函数(){
//对每个未选中的框进行填充
取消选中.push($(this).attr('value'))
console.log(取消选中);
});
});
});

1.
2.
3.

您需要在单击事件中添加每个脚本

$(函数(){
$(“输入[name=myList]”)。在(“单击”,函数()上){
$(“输入[name=myList]:未(:选中)”)。每个(函数(){
log($(this.val());
});
});
});

1.
2.
3.

我将您的代码直接复制到小提琴上,效果很好。您可能错过了jquery库

编辑:

为了确保这一点,我更新了代码片段以生成输入,它仍然可以正常工作

$(函数(){
var html='1'
+'2'
+'3';
$(“#我的复选框列表”).html(html);
$(“输入[name=myList]”)。在(“单击”,函数()上){
控制台日志(“已触发”);
//在此处编码以查找未选中的项目
$box=$('input[name=myList]:未(:选中)');
$box.每个(函数(){
log($(this.val());
});
});
});

另一个解决方案是在html中添加“onclick”方法。只要单击复选框,就会调用javascript函数。该函数可以包含复选框的任何逻辑

<input type="checkbox" name="myList" value="1" checked onclick="checkboxChangeEvent();">1

你能不能再详细一点,也不能肯定我是否明白你的意思。我是否将(“click”,function(){})替换为(“click”,function($(this).attr('value')){})当您在jquery中使用“$”来选择一个Htmlenty时,“this”值引用该实体的上下文。由于您使用$选择输入类型,因此将获得多个选项。我还建议使用jquery的each方法添加click回调。“attr”方法用于选择元素内的属性,检查分配给每个属性的值有助于知道您正在处理哪个框。这就是您正在查看的内容?这甚至不会将值返回到控制台,它只会在第一次加载页面时返回值,任何更改都只会记录为“已触发”这是如此奇怪,它在这里工作,而在我的上不工作,可能有一个问题,输入字段被生成,然后插入到??不应该。一旦它们存在,
$('input[name=myList]:not(:checked)
就应该抓住它们(假设它们有
name=myList
)。对我来说,它甚至没有注册点击,这是最大的问题。如果没有更多信息,我猜你的选择器与你的DOM不匹配。因此,请确保您没有任何打字错误,并且输入的名称与选择器中的名称匹配。至于cosnole jQuery.fn.jQuery中的jQuery lib,它返回“3.2.1”,因此这将是一个“否”,我不知道为什么单击事件没有触发。如果我不明白为什么单击事件没有触发,可能就必须这样做。我的答案很孤独。⊙﹏⊙
let v = $(this).attr('value');
if(v === 1){ // box 1 selected
<input type="checkbox" name="myList" value="1" checked onclick="checkboxChangeEvent();">1
function checkboxChangeEvent(){
    $boxes = $('input[name=myList]:not(:checked)');
    $boxes.each(function() {
      alert($(this).val());
    });
}