【问题标题】:Checkboxes checked when value IN comma separated string (or array) Javascript当值 IN 逗号分隔字符串(或数组)Javascript 时检查复选框
【发布时间】:2012-04-05 00:07:39
【问题描述】:

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

【问题讨论】:

  • 换行符有问题吗?!
  • 我非常喜欢水平滚动:D
  • @user1071915:以后请格式化您的代码,以便其他人阅读。

标签: php javascript checkbox


【解决方案1】:

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

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,2,3,4 的“组”复选框.....并让它选中与下面匹配的“个人”复选框.. .1....2.......3.
  • “组”复选框是什么意思?你是什​​么意思“选择”元素?您的意思是您希望函数返回它或使用focus 选择它?
【解决方案2】:

1) 天哪,使用大括号。

2) 这是关于什么的:

if(!countCheckBoxes)
    objCheckBoxes.checked = CheckValue;

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

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

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

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

【讨论】:

  • 你在使用任何类型的 javascript 库吗?这在 jQuery 中会很简单。
  • 我不是,由于某种原因我在 Joomla 1.6 中遇到了麻烦.....尝试坚持使用基本 JS
  • 试过了,得到一个复选框是未定义的......我的个人复选框名称是一个数组“teamarray2 []”我的组复选框应该命名不同吗?
  • 伙计,它完全有效:jsfiddle.net/3nNHb 如果您单击 4 个复选框中的第一个,它会将其他 3 个复选框的检查值设置为 true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
相关资源
最近更新 更多