【问题标题】:Javascript - Uncheck all elements not listed by an arrayJavascript - 取消选中数组未列出的所有元素
【发布时间】:2026-02-17 07:30:01
【问题描述】:

给定一个值数组,我希望我的代码禁用与该值相关的所有元素(复选框),并取消选中之前选中的任何它禁用的元素。最初我的代码只是禁用了它们并没有取消选中它们:

function allow(j, extended){
    $('[id^="'+j+'_extended_"]').attr('disabled', 'disabled');
    for (var k = 0; k < extended.length; k++) {
        $("#"+j+"_extended_"+extended[k]).attr("disabled", ""); //IE
        $("#"+j+"_extended_"+extended[k]).removeAttr('disabled'); //Other Browers
    }
}

但是,这将首先禁用每个元素,然后重新启用允许的元素。这不适用于检查/取消检查,因为它不应该检查新的,而只取消选中那些不再允许的。取消选中最后被禁用的那些,而让其他人保持选中/未选中的最佳方法是什么?

感谢您的宝贵时间!

【问题讨论】:

  • 这个函数的参数是什么?
  • @SamuelEdwinWard 似乎 j 是一个 id 前缀,而 extended 是数组。但他想要什么?
  • 我认为他想取消选中数组中的某个复选框
  • 参数是 j ,它只是一个索引,而扩展是一个允许的数字数组。因此,复选框元素的格式为 7_extended_456,其中 7 仅表示表中的行(您可以忽略该部分),而 456 是允许或不允许的特定“扩展”。不要担心扩展是什么意思,它只是一个标签。数组将类似于 [456,123,352]。如果是这种情况,则应启用复选框 7_extended_456 并检查是否存在。但是,应该禁用和取消选中 7_extended_898。
  • 抱歉,我的问题不是很清楚。

标签: javascript jquery checkbox


【解决方案1】:

在jquery中使用这个方法来改变对象的prop

$("#checkboxname").prop("checked","")// to uncheck
$("#checkboxname").prop("checked","checked")// to check

在你的代码中

$("#"+j+"_extended_"+extended[k]).prop("checked", "");

希望有用

【讨论】:

  • 感谢您的回复。对不起,我应该更清楚。我正在寻找禁用和取消选中数组中未指定的所有元素的方法。我确实知道取消选中它们的命令。我不清楚如何选择数组中未指定的所有元素。但是,我刚刚选择传入不允许的元素而不是允许的元素。然后只需对我的代码进行一些更改,它就可以工作了。不过感谢您的宝贵时间。
  • 我认为首先你必须取消选中并禁用 each() 函数的所有复选框,然后检查数组并找到必须检查和启用的元素,一个问题:你知道命令检查和取消检查并使用数组,只是想要一个算法正确地完成工作?抱歉英语不好
【解决方案2】:

我没有传入要启用的元素的数组,而是传入要禁用的元素的数组。这样我也可以明确地说取消选中它们。生成的代码如下所示:

function disallow(j, extended){
    //First, allow all.
    $('[id^="'+j+'_extended_"]').attr("disabled", ""); //IE
    $('[id^="'+j+'_extended_"]').removeAttr('disabled'); //Other Browers
    //Then remove any that are not allowed.
    for (var k = 0; k < extended.length; k++) {
        $("#"+j+"_extended_"+extended[k]).attr('disabled', 'disabled');
        $("#"+j+"_extended_"+extended[k]).attr("checked", ""); //IE
        $("#"+j+"_extended_"+extended[k]).removeAttr('checked'); //Other Browers
    }
}

非常感谢那些花时间回复的人。

【讨论】:

    最近更新 更多