0

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

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
    }
}

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

感谢您的时间!

4

2 回答 2

1

要更改对象的道具,请在 jquery 中使用此方法

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

在你的代码中

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

我希望有用

于 2012-05-21T15:21:02.380 回答
0

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

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
    }
}

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

于 2012-05-22T00:06:34.870 回答