复选框控制下拉框是否禁用
最近在解决客户问题的时候,遇到这么一个需求:
通过复选框的勾选与不勾选,来控制后面的下拉框禁用与否。
效果如下图:
复选框勾选,则下拉框可用;复选框不勾选,则下拉框禁用。
方法如下:
1. 设计参数模版表:
A1,A2,A3都是复选框,开值是1,关值是0.这三个单元格必须都有三个变量名,此例中变量名分别为:test1,test2,test3
2. 在JSP中定义一个_cellValueChanged(cell)
function _cellValueChanged(cell)
{
var node = cell.id;//取到当前单元格的ID
//alert(node);
var c = node.replace(“A”,”B”);//因为下拉框是紧跟在复选框的后面,也就是说若复选框的单元格ID是:form1_A1,则下拉框的ID是:form1_B1,所以用replace替换一下
var s = document.getElementById(c).paramName;//取到单元格的变量名
//alert(“c=”+c);
var n = document.getElementById(node).childNodes[0].value;
//alert(“n=”+cell.childNodes[0].value)
if(n == 1)
{
document.getElementById(s).disabled = false;//通过select中的元素去控制控件是否禁用
}else
{
document.getElementById(s).disabled = true;//通过select中的元素去控制控件是否禁用
}
}
注意:上文中的红色部分很重要。因为大部分人会想到通过:document.getElementById(“form1_B1”).disabled = true;的方式去控制,其实这种方式是不对的,可能在某些浏览器下就达不到禁用的效果。(如IE6)
所以需要通过对select中的一些元素来禁用,在报表中可以通过document.getElementById(“变量名”).disabled = true;来禁用。