-2

我将如何更改此 JS 函数以仅检查具有逗号分隔字符串中的值的复选框?使用 MySQL,我可以使用“IN”函数来做到这一点,在 Javascript 中是否有类似的函数?好像找不到。。

我想选择一个“组”复选框,值为1,2,3,4,5 ......然后检查时,请检查以下“单个”复选框,单个值为1 ....或...2....或....3....等。

例子:

(复选框 1)组 1 值="1,2,3"

(复选框 2)项目 1 值="1"

(复选框 3)项目 2 值 =“2”

(复选框 4)项目 3 值 =“3”

(复选框 5)项目 4 值 =“4”

因此,如果选中复选框 1,则会选中复选框 2、3、4。

function SetAllCheckBoxes(FormName, FieldName, CheckValue) {
    if (!document.forms[FormName]) return;

    var objCheckBoxes = document.forms[FormName].elements[FieldName];  
    if (!objCheckBoxes) return;

    var countCheckBoxes = objCheckBoxes.length;
    if (!countCheckBoxes) {
        objCheckBoxes.checked = CheckValue;
    }
    else {
        // set the check value for all check boxes
        for(var i = 0; i < countCheckBoxes; i++) {
            objCheckBoxes[i].checked = CheckValue;
        }
    }
}
4

2 回答 2

0

好的,根据这个问题的神秘性质更新了我的问题。所以你想看看一个对象是否有一个存在于逗号分隔字符串中的值?如果是这样:

function SetAllCheckBoxes(individualCheckbox,values) {
   if(!individualCheckbox||!values) {
      return; 
   } else {
     var array = values.split(',');  
     for(var i = 0; i <= array.count(); i++) {
        if(individualCheckbox.value == array[i]) {
           return true;
        } 
     }
   }
} 
于 2012-04-04T15:28:50.550 回答
0

1)天哪,使用大括号。

2)这是关于什么的:

if(!countCheckBoxes)
    objCheckBoxes.checked = CheckValue;

...如果您没有任何复选框,为什么要将空数组设置为 CheckValue?

3)您在页面中获得 1 个表单,然后在该表单中查找具有特定名称的元素。您真的期望获得超过 1 个复选框吗?如果是这样,您的 html 已损坏。您是在谈论一组单选按钮吗?

4)你的问题不清楚。但答案可能与字符串函数有关,拆分:

var vals = "a,b,c".split(","); // vals == ["a", "b", "c"]

好的,所以在澄清问题的基础上,我相信您需要以下内容:

function SetAllCheckBoxes(FormName, FieldNames, CheckValue) {
    var form = document.forms[FormName];
    if (!form) {
        return;
    }

    var checkboxNames = FieldNames.split(",");
    for (var i=0, l=checkboxNames.length; i<l; i++) {
        var checkboxName = checkboxNames[i].trim(); // needed if your comma separated string may contain spaces
        var checkbox = form.elements[checkboxName];
        checkbox.checked = CheckValue
    }
}
于 2012-04-04T15:38:45.870 回答