<script language="javascript">    function select_all() {
        var f = document.form1
        if (f['a[]'].length)//多个项目
            for (var i = 0; i < f['a[]'].length; i++) f['a[]'][i].checked = !f['a[]'][i].checked
            else f['a[]'].checked = !f['a[]'].checked//单个
        Count();
    }
    function Count() {
        var f = document.form1, sum = 0,rx=/^\d+$/;
        if (f['a[]'].length)
            for (var i = 0; i < f['a[]'].length; i++) {
                if (f['a[]'][i].checked && rx.test(f.money[i].value)) sum += parseInt(f.money[i].value);
            }
        else if (f['a[]'].checked && rx.test(f.money.value)) sum = parseInt(f.money.value);        f.sum.value = sum;
    }
</script>
<form name="form1" method="post" action="demo.php"><table><tr><td>选</td><td>金额</td></tr>
<tr><td><input type='checkbox' name='a[]' value='$row[id]' onclick="Count()"></td><td><input name='money' type='text' size='20' value='$row[金额]'>件</td></tr>
<tr><td><input type='checkbox' name='a[]' value='$row[id]' onclick="Count()"></td><td><input name='money' type='text' size='20' value='$row[金额]'>件</td></tr>
<tr><td><input type='checkbox' name='a[]' value='$row[id]' onclick="Count()"></td><td><input name='money' type='text' size='20' value='$row[金额]'>件</td></tr>
<tr><td><input type=checkbox onClick="select_all()"> 全选 &nbsp;&nbsp;&nbsp; 金额汇总:<input name='sum' type='text' size='20' value='$xxx'>
 
</td></tr>
 </table></form>

解决方案 »

  1.   


    代码测试了,相同问题还要继续请教:
    1、金额带小数点无法累计计算;
    2、<input name='money' type='text' size='20' value='$row[金额]'>能否改成数组方式<input name='money[]' type='text' size='20' value='$row[金额]'>
    3、高手,这个是一个非分的要求,能否增加一个<input name='SUMM' type='text' size='20' value='300'>SUMM的值为300,判断一下sum的值超300,弹个提示,就不让选择了,如果还想选择除非SUMM的300数更改为500最后说一点,你是我到目前认识最厉害的JS高手,不是恭维。因为相同问题我在另一个帖子里边已经问了快一周了,都没有人答复,你直接给我了答案,太谢谢好心的版主高手
      

  2.   

    无法累计小数,是因为showbo设置了一个数字的有效性检测,仅为整数,将rx=/^\d+$/ 改为 rx=/^[0-9]+([.]{1}[0-9]{1,2})?$/即可允许出现小数,且只允许小数点后两位至于你后面的2,3,你太懒了,基础的功能实现了,其他的自己可以修改,什么都给你齐齐整整的,那是推你入火坑了
      

  3.   

    sum += parseInt(f.money[i].value); 
    呵呵,看来你是真的没有认真看过代码呀.parseInt()返回的就只能是整数
      

  4.   


    谢谢版主的教诲,第二个问题,我已经解决了,第一个问题还是不好用,小数点后边的数还是不行。第三个问题我在独立思考一下,不懂得还请高手赐教。第三主要是全选难弄,单个勾选的你计算完总数大于你的限制就设置checked为false就行了,再减去对应的金额