复选框检查值IN逗号分隔字符串(或数组)Javascript时

时间:2012-04-04 15:21:02

标签: php javascript checkbox

如何更改此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;
        }
    }
}

2 个答案:

答案 0 :(得分: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;
        } 
     }
   }
} 

答案 1 :(得分:0)

1)OMG,使用大括号。

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