无法检查是否选中了javascript复选框数组元素?
需要的是-选中复选框时,选择列表中的选项5将被选中,选中复选框时,选择列表中的选项0将被选中 选择列表和复选框在php代码中动态生成,如下所示:无法检查是否选中了javascript复选框数组元素?,javascript,checkbox,Javascript,Checkbox,需要的是-选中复选框时,选择列表中的选项5将被选中,选中复选框时,选择列表中的选项0将被选中 选择列表和复选框在php代码中动态生成,如下所示: echo "<select name='coupons".$i."' id='coupons".$i."'>"; ------- All Options -------- echo "</select>"; <input type='checkbox' name='myCheckbox[]' value='<?p
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;?>)'>
-----------------------------------------------------------------------------
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;
}
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;
}
}
上述问题已得到解决。。。。。。。多谢大家
现在我需要做的是,当用户选中一个复选框,以选择或取消选择表单上所有动态生成的复选框时,上述逻辑应该起作用
<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;?>)'>
选中/取消选中全部
getElementsByName返回一个对象数组。将线路替换为:
var form_object = document.getElementsByName(checkbox_name+"["+i+"]")[0];
如果您对复选框所在的表单有引用,并且表单中有唯一的名称,则您可以通过以下方式访问它:
form_object = form.elements[ checkbox_name + "[" + i + "]" ];
您还可以使用三元运算符使代码更简洁:
selname.selectedIndex = form_object.checked? 5 : 0;
编辑
对不起,错过了明显的机会。如果将引用传递给处理程序中的复选框,则还可以获取表单(所有表单控件都有一个引用它们所在表单的表单属性)。正如Jan Pfeifer所建议的(缩写标记):
可以将引用作为参数传递给复选框本身
<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_对象未定义源文件:Line:71错误:form_对象未定义源文件:Line:72函数setCCode(checkbox_name,i){var form_object=document.forms[0]。元素[checkbox_name+“[“+i+”]];var selname=document.getElementsByName(“优惠券”+i)[0];selname.selectedIndex=form_object.checked?5:0;}是否按照指定首先将对表单的引用分配给变量表单?
<input ... onclick='setCCode(this, <?php echo $i;?>)'>
function setCCode(checkbox, i)
{
checkbox.form.elements['coupons' + i].selectedIndex = checkbox.checked? 5 : 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;
}