首页 新闻 会员 周边

jsp全选/全不选功能,checkbox

0
[已解决问题] 解决于 2012-09-07 13:50

jsp页面好多checkbox,我想实现全选/全不选功能,并且可以全部删除!哪位可以给一个示例参考参考!

weina的主页 weina | 初学一级 | 园豆:130
提问于:2012-07-25 14:38
< >
分享
最佳答案
4

使用 ssh 来操作的话,页面中元素 是用 iterator 来遍历出来的 name 是 action 中的属性 值为 你要删除 实体的id

<input type="checkbox" name="technologyIds" value="<s:property value="#technologyModel.id"/>"/>

js :

function selectAllOrDisSelectAll(){
    var techIds = document.getElementsByName("technologyIds");
    var nowStatus = document.getElementById("checkStatus");// 最上面那个用来控制全选操作的
    for(var i=0;i<techIds.length;i++){
        techIds[i].checked = nowStatus.checked;
    }
}

后台 得到 technologyIds 数组 然后通过主键删除

奖励园豆:5
被日子混了 | 菜鸟二级 |园豆:225 | 2012-07-27 12:05
其他回答(2)
1

JavaScript 可以么?

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-07-25 16:16

如果你会其他方法也行,指导指导!

支持(0) 反对(0) weina | 园豆:130 (初学一级) | 2012-07-25 16:17

@weina: 原理很简单,使用 JavaScript 操作所有CheckBox,并组合要提交的数据。

至于如何组合数据,这跟提交方式有关。

比如“全部删除”这个操作,可以通过页面提交到Servlet处理,也可以通过Ajax提交给Servlet或Action处理。推荐使用页面提交,这样可以避免Ajax手动刷新页面的问题。

全选/全不选很简单,设置一个叫chkAll的Checkbox,绑定其点击事件即可:

$("#chkAll").bind("click", function () {
    $(":checkbox").attr("checked", $("#chkAll").attr("checked"));
});

全部删除的JavaScript部分,在删除按钮上绑定一个点击事件:

$("#btnDelete").bind("click", function () {
    $("#btnDelete").attr("disabled", "disabled");
    if ($(":checkbox[id!='chkAll'][checked='true']").length == 0) {
        alert("请选择一条记录。");
        return;
    }
    document.forms[0].submit();
});

至于Servlet或者Action里怎么写删除的处理方法,你自己来吧。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-07-25 16:30

@飞扬的尘埃:  我这个是jsp页面,我实现不了全选功能,这个checkbox,只有一个,其他的是循环遍历出来的,所以........

支持(0) 反对(0) weina | 园豆:130 (初学一级) | 2012-07-25 16:55

@weina: 正因为只有一个checkbox,所以才用JavaScript来全选啊。JSP就是Java代码+HTML标签。当你能够使用JavaScript对页面进行操作的时候,JSP中的Java脚本早都运行完了,所有的checkbox都已经生成出来了。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-07-25 17:34
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>复选框选中效果</title>
<style type="text/css">
.ct{
text-align:center;
}
</style>
<script type="text/javascript">
function allCheck(){
    var obj=document.getElementsByTagName("input");
    if(document.getElementById("all").checked==true){
        for(var i=0;i<obj.length;i++){
            obj[i].checked=true;
        }
    }else{
        for(var i=0;i<obj.length;i++){
            obj[i].checked=false;
        }
    }
}
function checkT_F(){
    var obj=document.getElementsByTagName("input");
    var j=0;
    for(var i=0;i<obj.length;i++){
        if(obj[i].id!='all'){    //如果是复选框
            if(obj[i].checked==true){    //并且为选中
                j++;
            }
        }
    }
    if(j==(obj.length-1)){    //如果复选框选中的数量等于(复选框总和减去全选这个选框的数量)
        document.getElementById("all").checked=true; //全选被激活
    }else{
        document.getElementById("all").checked=false;    //取消全选
    }
}
</script>
</head>
<body>
<table width="500" border="1" cellspacing="0" cellpadding="0" class="ct" onclick="javascript:checkT_F()">
  <tr>
    <td><input type="checkbox" id="all" name="allCK" onclick="javascript:allCheck()"/>全选</td>
    <td>产品名称</td>
    <td>价格(元)</td>
    <td>数量</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="1" /></td>
    <td>诺基亚N85手机</td>
    <td>2589</td>
    <td>6</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="2" /></td>
    <td>佳能数码相机</td>
    <td>1850</td>
    <td>5</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="3" /></td>
    <td>戴尔键盘</td>
    <td>1834</td>
    <td>4</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="4" /></td>
    <td>华为手机</td>
    <td>3432</td>
    <td>3</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="5" /></td>
    <td>iphone</td>
    <td>4000</td>
    <td>20000</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="6" /></td>
    <td>华硕笔记本</td>
    <td>6988</td>
    <td>5</td>
  </tr>
  <tr align="left">
    <td colspan="4">&nbsp;&nbsp;删除选中的产品</td>
  </tr>
</table>

</body>
</html>
new_阳光 | 园豆:225 (菜鸟二级) | 2012-07-26 12:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册