无法检查javascript复选框数组元素是否被选中

Unable to check if a javascript checkbox array element is checked or not?

本文关键字:是否 数组元素 复选框 检查 javascript      更新时间:2023-09-26

想要的是-当复选框被选中时,选项no。选择列表中的5将被选中,当复选框未选中时选项no。0将在选择列表中被选中。

选择列表和复选框在php代码中动态生成,如下所示:

echo "<select name='coupons".$i."' id='coupons".$i."'>";
------- All Options --------
echo "</select>";

<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode("myCheckbox[]",<?php echo $i;?>)'> 
 -----------------------------------------------------------------------------

现在我自己解决了第二个要求.....感谢所有人的投入

只是在for loop

checkAll()中添加了以下行
setCCode(children[i],i+1);

javascript函数:

function setCCode(checkbox_name,i) 
{   
    var form_object = document.getElementsByName(checkbox_name+"["+i+"]");
    var selname = document.getElementsByName("coupons"+i)[0];
    if(form_object.checked) {
            selname.selectedIndex = 5;
    }
    else {
        selname.selectedIndex = 0;
    } 
}

上述问题解决.......Thanks to all

现在我需要做的是当用户选中一个复选框来选择或取消选择表单上所有动态生成的复选框时,上述逻辑应该工作。

<input type='checkbox' name='checkall' onChange="checkAll(this, 'myCheckbox[]')">
<span class="chkall">Check / Uncheck All</span>
<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode(this,<?php echo $i;?>)'>

我用来选择/取消选择表单上的所有复选框的javascript代码如下:

function checkAll(parent, field)
{
    var children = document.getElementsByName(field);
    var newValue = parent.checked;
    for (i = 0; i < children.length; i++){
    if (children[i].disabled == false) {    
        children[i].checked = newValue;
    }
    }
}
function setCCode(Sender,i) 
{   
  document.getElementsByName("coupons"+i)[0].selectedIndex = Sender.checked ? 5 : 0;
}

getElementsByName返回一个对象数组。

var form_object = document.getElementsByName(checkbox_name+"["+i+"]")[0];

可以将引用作为参数传递给复选框本身

<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode(this,<?php echo $i;?>)'>
function setCCode(Sender,i) 
{   
  document.getElementsByName("coupons"+i)[0].selectedIndex = Sender.checked ? 5 : 0;
}

如果你有一个对复选框所在表单的引用,并且它在表单中有一个唯一的名称,那么你可以这样访问它:

form_object = form.elements[ checkbox_name + "[" + i + "]" ];

,也可以使用三元操作符使代码更简洁:

selname.selectedIndex = form_object.checked? 5 : 0;

编辑

对不起,我没注意到。如果您在处理程序中传递对复选框的引用,那么您也可以获得表单(所有表单控件都有一个form属性来引用它们所在的表单)。所以正如Jan Pfeifer建议的(缩写标记):

<input ... onclick='setCCode(this, <?php echo $i;?>)'>

则脚本只是:

function setCCode(checkbox, i) 
{   
    checkbox.form.elements['coupons' + i].selectedIndex = checkbox.checked? 5 : 0;
}