求指导如何用js来判断选中的checkbox是否符合条件

zftnt 2017-01-17 03:57:27
html代码如下:

<table class="tdbg" cellspacing="0" rules="all" border="1" id="GridView1" style="font-size:9pt;width:100%;border-collapse:collapse;">
<tr align="center" style="background-color:#99CCFF;">
<th scope="col">
<input id="GridView1_ctl01_chkHeader" type="checkbox" name="GridView1$ctl01$chkHeader" onclick="javascript:SelectAll(this);" />采购批次
</th><th scope="col">
日期
</th><th scope="col">
客户单位
</th><th scope="col">
型号
</th><th scope="col">
数量(T)
</th><th scope="col">
单价
</th><th scope="col">
网价
</th><th scope="col">
加工费
</th><th scope="col">
销售金额
</th><th scope="col">
代理价
</th><th scope="col">
代理扣税
</th><th scope="col">
中介费
</th><th scope="col">
实际销售额
</th><th scope="col">
到账金额
</th><th scope="col">
操作
</th>
</tr><tr>
<td align="center" style="width:6%;">
<input id="cbSelectInfo"
type="checkbox"
value='517'
name="cbSelectInfo">
52
</td><td align="center" style="width:7%;">

2017年01月16日
</td><td align="center" style="width:18%;">

abcdef制品厂

</td><td align="center" style="width:5%;">
zx01
</td><td align="center" style="width:5%;">
0.955
</td><td align="center" style="width:5%;">
23780.00
</td><td align="center" style="width:5%;">
22850.00
</td><td align="center" style="width:5%;">
930.00
</td><td align="center" style="width:6%;">
22709.90
</td><td align="center" style="width:5%;">
930.00
</td><td align="center" style="width:5%;">
0.00
</td><td align="center" style="width:5%;">
0.00
</td><td align="center" style="width:7%;">
22709.90
</td><td align="center" style="width:5%;">
42965.00
</td><td align="center" style="width:5%;">



<a href='SaleOrderUpdate.aspx?pageNo=0&op=edit&ID=517'>修改</a>

</td>
</tr><tr style="color:Blue;">
<td align="center" style="width:6%;">
<input id="cbSelectInfo"
type="checkbox"
value='512'
name="cbSelectInfo">
52
</td><td align="center" style="width:7%;">

2017年01月13日
</td><td align="center" style="width:18%;">

AAAAAA有限公司

</td><td align="center" style="width:5%;">
zzzz
</td><td align="center" style="width:5%;">
10
</td><td align="center" style="width:5%;">
22980.00
</td><td align="center" style="width:5%;">
22480.00
</td><td align="center" style="width:5%;">
500.00
</td><td align="center" style="width:6%;">
229800.00
</td><td align="center" style="width:5%;">
500.00
</td><td align="center" style="width:5%;">
0.00
</td><td align="center" style="width:5%;">
0.00
</td><td align="center" style="width:7%;">
229800.00
</td><td align="center" style="width:5%;">
0.00
</td><td align="center" style="width:5%;">



<a href='SaleOrderUpdate.aspx?pageNo=0&op=edit&ID=512'>修改</a>

</td>
</tr></table>


我想实现的功能是:点击一个checbox,会检测某一列的值,根据这个值来判断,选择的这条记录是否符合要求,请问要怎么写?
...全文
245 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zftnt 2017-01-19
  • 打赏
  • 举报
回复
哇哦!版主大神威武
  • 打赏
  • 举报
回复
要去掉空白

    var getChecked = function (arrDom) {
        var rst = [];
        for (var i = 0; i < arrDom.length; i++)
            if (arrDom[i].checked) rst.push(arrDom[i]);
        return rst;
    },trim=function(v){return v.replace(/^\s+|\s+$/g, '')};
    function checkState() {
        var ipt = getChecked(document.getElementById('GridView1').getElementsByTagName('input'));
        if (ipt.length == 1) {
            var v = trim(ipt[0].parentNode.parentNode.cells[2].innerHTML);
            if (v == "AAAAAA有限公司") {//为毛这里的判断无法成立?字符串相等不能这么弄?
                alert('这个公司名字好奇怪!');
                return false;
            }
            else alert(v)

        }
        else if (ipt.length > 1) {//多选分支,自己写逻辑,我是看不懂你逻辑了。。
            var allSame = true, tr = ipt[0].parentNode.parentNode;
            var cmpName = trim(tr.cells[2].innerHTML);
            var date = trim(tr.cells[1].innerHTML);
            var no = trim(tr.cells[3].innerHTML);
            var price = trim(tr.cells[5].innerHTML);
            for (var i = 1; i < ipt.length; i++) {
                tr = ipt[i].parentNode.parentNode;
                if (cmpName != trim(tr.cells[2].innerHTML)
                    || date != trim(tr.cells[1].innerHTML)
                    || no != trim(tr.cells[3].innerHTML)
                    || price != trim(tr.cells[5].innerHTML)) {
                    allSame = false; break;
                }
            }

            if(!allSame)alert('日期 ,客户单位 ,型号 ,单价必须一致!');
        }
        else alert('木有选择记录!')
    }
zftnt 2017-01-18
  • 打赏
  • 举报
回复
谢谢版主大神的指导!请再帮我分析下:

var getChecked = function (arrDom) {
                var rst = [];
                for (var i = 0; i < arrDom.length; i++)
                    if (arrDom[i].checked) rst.push(arrDom[i]);
                return rst;
            }
            function checkState() {
                var ipt = getChecked(document.getElementById('GridView1').getElementsByTagName('input'));
                if (ipt.length == 1) {
                    var v = ipt[0].parentNode.parentNode.cells[2].innerHTML;//我的这个cells[2]是从0开始算
                    if (v == "AAAAAA有限公司") {//为毛这里的判断无法成立?字符串相等不能这么弄?
                        alert('这个公司名字好奇怪!');
                        return false;
                    }
                    else alert(v)
                    
                }
                else if (ipt.length > 1) {//多选分支,自己写逻辑,我是看不懂你逻辑了。。
                    alert(ipt.length);//其实我的逻辑很简单啊,如果那个六A公司和那个奇怪名字的制品厂的名称一致,日期一致,单价一致,产品型号一致,这两条记录就可以在一起啊在一起,否则就提示用户什么原因不能在一起
                }
                else alert('木有选择记录!')
            }
都在代码里了
zftnt 2017-01-18
  • 打赏
  • 举报
回复
我自己写的js代码就是多行的流程,写在一个提交按钮的onclientclick事件里
zftnt 2017-01-18
  • 打赏
  • 举报
回复
我想实现的是:点击checkbox,首先判断是点击一行还是多行的checkbox,点击的是一个checkbox,则获得所在行的第13列的值,并判断是否大于0,如果是点击的多行的checkbox,则进入另外一个流程
  • 打赏
  • 举报
回复
引用 3 楼 zftnt 的回复:
我想实现的是:点击checkbox,首先判断是点击一行还是多行的checkbox,点击的是一个checkbox,则获得所在行的第13列的值,并判断是否大于0,如果是点击的多行的checkbox,则进入另外一个流程

<input type="button" value="check" onclick="checkState()" />
<script>
    var getChecked = function (arrDom) { var rst = []; for (var i = 0; i < arrDom.length; i++) if (arrDom[i].checked) rst.push(arrDom[i]); return rst; }
    function checkState() {
        var ipt = getChecked(document.getElementById('GridView1').getElementsByTagName('input'));
        if (ipt.length == 1) {
            var v = parseFloat(ipt[0].parentNode.parentNode.cells[12].innerHTML);//不懂你13是从1开始算还是0,数组是从0开始算
            if (v == 0) alert('实际销售额为0')
            else alert(v)

        }
        else if (ipt.length > 1) {//多选分支,自己写逻辑,我是看不懂你逻辑了。。
        }
        else alert('木有选择记录!')
    }
</script>
  • 打赏
  • 举报
回复
Jquery .each来判断 ,this.click的时候,判断当前的索引的值,然后根据这个值来判断就可以了,想怎么搞就怎么搞。
  • 打赏
  • 举报
回复
不懂你要搞什么东西,功能没说明白
zftnt 2017-01-17
  • 打赏
  • 举报
回复
js代码如下:

function chk() {
                //检测checkbox是否选中
                var obj = document.getElementsByName('cbSelectInfo'); //选择所有name="'cbSelectInfo'"的对象,返回数组 
                //取到对象数组后,我们来循环检测它是不是被选中 
                var s = '';
                for (var i = 0; i < obj.length; i++) {
                    if (obj[i].checked) s += obj[i].value + ','; //如果选中,将value添加到变量s中 
                }
                //那么现在来检测s的值就知道选中的复选框的值了 
                if (s == "") {
                    alert("请选择一条或者多条销售记录");
                    return false;
                }
                
                //获得checkbox所在行的数据
                var rows = document.getElementById("GridView1").rows;
                //将销售记录的日期、客户单位、产品型号、销售单价分别放入4个数组
                var strdate = [];
                var strsup = [];
                var strst = [];
                var strsale = [];
                
                for (var i = 0; i < obj.length; i++) {
                    if (obj[i].checked) {
                        var row1 = obj[i].parentElement.parentElement.rowIndex;
                        strdate.push(rows[row1].cells[1].innerHTML);
                        strsup.push(rows[row1].cells[2].innerHTML);
                        strst.push(rows[row1].cells[3].innerHTML);
                        strsale.push(rows[row1].cells[5].innerHTML);
                        //cjstr.push(rows[row1].cells[14].innerHTML);
                    }                   
                }

                //循环比较数组内元素,有不一致的地方则中断程序
                var nar1 = strdate.sort();
                var nar2 = strsup.sort();
                var nar3 = strst.sort();
                var nar4 = strsale.sort();
                
                
                for (var i = 0; i < nar1.length - 1; i++) {
                    if (nar1[i] != nar1[i + 1]) {
                        alert("销售日期不一致:" + nar1);
                        return false;
                    }
                    if (nar2[i] != nar2[i + 1]) {
                        alert("客户单位不一致:" + nar2);
                        return false;
                    }
                    if (nar3[i] != nar3[i + 1]) {
                        alert("产品型号不一致:" + nar3);
                        return false;
                    }
                    if (nar4[i] != nar4[i + 1]) {
                        alert("销售单价不一致:" + nar4);
                        return false;
                    }
                }
            }
我写的这个js,判断是否选中,判断选择的多行数据中的某些字段是否相等,但是检测某个列值是否符合要求,死活出不来

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧