复选框的全选与反选
效果:

html:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://code.jquery.com/jquery-1.4.1.min.js"></script> </head> <body> <form method="post"> <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center" valign="middle"> <table width="40%" border="1" align="center" cellpadding="0" cellspacing="0"> <input name="ids" id="ids" type="hidden" value="" /> <input name="names" id="names" type="hidden" value="" /> <tr> <td style="width: 10%; cursor: pointer;" onclick="selectAllCheckBox('td_selected_all');" id="td_selected_all"> 全选 </td> <td style="width: 30%"> 城市 </td> </tr> <tr> <td> <input type="checkbox" name="city" onclick="chooseTeacher(this)" id="a1" value="北京" /> </td> <td> 北京 </td> </tr> <tr> <td> <input type="checkbox" name="city" onclick="chooseTeacher(this)" id="a2" value="天津" /> </td> <td> 天津 </td> </tr> <tr> <td> <input type="checkbox" name="city" onclick="chooseTeacher(this)" id="a3" value="重庆" /> </td> <td> 重庆 </td> </tr> <tr> <td> <input type="checkbox" name="city" onclick="chooseTeacher(this)" id="a4" value="上海" /> </td> <td> 上海 </td> </tr> </table> </td> </tr> </table> </form> </body> </html>
js:
<script type="text/javascript" language="javascript">
//默认全选
document.getElementById("td_selected_all").innerHTML = "全选";
//点击多选框触发的事件
function chooseTeacher(checkBox) {
selectCheckBox(checkBox);
}
//获取当前选中对象的id及value
function selectCheckBox(checkBox) {
var ids = $("#ids").val();
var names = $('#names').val();
//添加
if (checkBox.checked == true) {
if (ids != "") {
ids = "," + ids + "," + checkBox.id + ",";
names = "," + names + "," + checkBox.value + ",";
}
else {
ids = "," + checkBox.id + ",";
names = "," + checkBox.value + ",";
}
}
//删除
else {
ids = "," + ids + ",";
names = "," + names + ",";
if (ids.indexOf("," + checkBox.id + ",") > -1) {
ids = ids.replace("," + checkBox.id + ",", ",");
names = names.replace("," + checkBox.value + ",", ",");
}
}
//去掉末尾逗号
if (ids.length > 1) {
ids = ids.substring(1, ids.length - 1);
}
else {
ids = "";
}
if (names.length > 1) {
names = names.substring(1, names.length - 1);
}
else {
names = "";
}
//赋值,做数据处理。
$("#ids").attr("value", ids);
$("#names").attr("value", names);
}
//全选、反选
function selectAllCheckBox(msg_id) {
var flag = isAllChecked();
//循环表单里的所有元素
for (var i = 0; i < document.forms[0].elements.length; i++) {
//如果是多选框的话
if (document.forms[0].elements[i].type == 'checkbox') {
//获取当前元素
var obj = document.forms[0].elements[i];
if (flag) {
if (obj.checked) {
obj.checked = false;
//记录id和value
selectCheckBox(obj);
}
}
else {
if (!obj.checked) {
obj.checked = true;
//记录id和value
selectCheckBox(obj);
}
}
}
}
if (msg_id != null) {
var obj = document.getElementById(msg_id);
var msg = "全选";
if (!flag) {
msg = "反选";
}
obj.innerHTML = msg;
}
}
//判断多选框是否本选中
//为ture :则是反选,需要去掉所有的checked
//为false:则是全选,需要加上所有的checked
function isAllChecked() {
var flag = true;
//index :选择器的index位置,即当前元素的索引,从0开始
//domEle:当前的元素(也可使用 "this" 选择器)
$(":checkbox").each(function(index, domEle) {
//判断是否有未选中的
if (!$(domEle).attr("checked")) {
if (document.getElementById("td_selected_all").innerHTML == "全选") {
flag = false;
return false;
} else {
flag = true;
return false;
}
}
});
return flag;
}
</script>

浙公网安备 33010602011771号