试了很多 jQuery 的写法,都没有达到预期的效果,最后还是一个原生的 JS 函数好使,直接上代码:
<script>
var ClickNum = 0;//判断同一checkbox连续点击次数
var PreCheckboxID = "";//记录点击checkbox的ID
//listId为控制checkbox的范围
//SelectRadio是点击checkbox自己
function SignCheck(listId, SelectCheckBox) {
///判断是否连击同一个checkbox
if (PreCheckboxID == SelectCheckBox.id) {
ClickNum = ClickNum + 1;
}
else {
PreCheckboxID = SelectCheckBox.id;
ClickNum = 0;
}
//找到控制范围
var GridViewableSearchList = document.getElementById(listId);
//找到控制范围下所有input
var objs = GridViewableSearchList.getElementsByTagName("input");
//找到控制范围下所有checkbox并都变为false
for (var i = 0; i < objs.length; i++) {
if (objs[i].type.toLowerCase() == "checkbox")
objs[i].checked = false;
}
var SelectCheckBoxId = SelectCheckBox.id;
//如果连击次数为奇次checked为true偶次为false
if (ClickNum % 2 != 1) {
document.getElementById(SelectCheckBoxId).checked = true;
}
else {
document.getElementById(SelectCheckBoxId).checked = false;
}
}
</script>
函数可由jQuery触发执行:
$('#ContentPlaceHolder1_GridView1').find('input:checkbox').click(function () {
SignCheck('ContentPlaceHolder1_GridView1',this);
});