无法检查javascript复选框数组元素是否被选中
Unable to check if a javascript checkbox array element is checked or not?
想要的是-当复选框被选中时,选项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;
}
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 检查数组元素是否存在
- 检查数组元素是否存在的安全方法
- 润滑猴测试数组元素是否存在
- 是否可以在不使用索引号的情况下访问 json 数组元素
- 检查字符串是否包含数组元素的任何部分
- JavaScript中确定数组元素是否正在进行中的最佳方式
- 如果不使用JavaScript跳到下一个,请检查数组元素是否存在
- 检查字符串数组元素是否为URL的子字符串
- Javascript:测试是否this.name ==数组元素
- 无法检查javascript复选框数组元素是否被选中
- 为什么可以'我是否在JavaScript中设置数组元素(字符串)的属性
- 检查 cookie 数组元素是否存在