求修改JS:gridview中某行中第二列checkbox控制第三列checkboxlist是否可用
刚学js的新手求助:
场景描述:gridview中有三列,第一列分类编号,第二列分类名称(checkbox),第三列子分类(checkboxList)
目的:点击某一行的checkbox,它对应的checkboxList的disabled跟着改变
现在的问题:我自己的代码 运行后 如果在某一行的checkbox上连点三下之后 就能达到要求,要不就是乱的
求代码,谢各位大神
<asp:GridView ID="gvWorkFlowImport" Width="100%" runat="server"
AutoGenerateColumns="False"
CssClass="gridview" onrowdatabound="gvWorkFlowImport_RowDataBound">
<Columns>
<asp:BoundField DataField="TypeId" HeaderText="分类编号" Visible="true" />
<asp:TemplateField HeaderText="分类名称">
<ItemTemplate>
<asp:CheckBox ID="chkWorkFlowType" Text='<%# DataBinder.Eval(Container.DataItem,"TypeName") %>' onclick='chkChanged()' runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="工作流版本">
<ItemTemplate>
<asp:CheckBoxList ID="chkVerSionList" RepeatDirection="Horizontal" runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
</asp:GridView>
<script type="text/javascript">
function chkChanged() {
var table = document.getElementById("<%=gvWorkFlowImport.ClientID %>");
var chk;
for (var i = 1; i < table.rows.length; i++)
{
chk=table.rows[i].cells[1].getElementsByTagName("input");
if (typeof chk != "undefined " && chk != null)
{
var isChecked=chk[0].checked;
var chklist =table.rows[i].cells[2].getElementsByTagName("input");
for(var j=0;j<chklist.length;j++)
{
if(chklist[j].type=="checkbox")
{
chklist[j].disabled=!isChecked;
}
}
}
}
}
</script>