我想在同一页面上验证Gridview
CheckBox
已检查多个Gridviews
我尝试过以下但是没有用。
<script type="text/javascript">
var TargetBaseControl = null;
window.onload = function () {
try {
//get target base control.
TargetBaseControl = document.getElementById('<%= this.GridView1.ClientID%>', '<%= this.GridView2.ClientID%>');
}
catch (err) {
TargetBaseControl = null;
}
}
function TestCheckBox() {
if (TargetBaseControl == null) return false;
//get target child control.
var TargetChildControl = "chkSelectAdd";
//get all the control of the type INPUT in the base control.
var Inputs = TargetBaseControl.getElementsByTagName("input");
for (var n = 0; n < Inputs.length; ++n)
if (Inputs[n].type == 'checkbox' &&
Inputs[n].id.indexOf(TargetChildControl, 0) >= 0 &&
Inputs[n].checked)
return true;
alert('Select at least one checkbox!');
return false;
}
</script>
答案 0 :(得分:0)
我可以在这里看到两个问题。 document.getElementById
一次只支持一个元素,因此您的代码只会检查第一个GridView的复选框。此外,元素的ID应该是唯一的,因此您可以在此处检查ID:
Inputs[n].id.indexOf(TargetChildControl, 0) >= 0 &&
只会在第一个复选框中返回true。
我建议删除TargetBaseControl
的使用,而只是依赖于复选框的名称而不是ID:
var Inputs = document.getElementsByTagName("input");
for (var n = 0; n < Inputs.length; ++n)
if (Inputs[n].type == 'checkbox' &&
Inputs[n].name.indexOf(TargetChildControl, 0) >= 0 &&
Inputs[n].checked)
return true;
...