繁体   English   中英

如何在表中查找值,然后在相邻单元格中获取数据

[英]How to find a value in a table, and then grab data in adjacent cells

我有一个页面,允许用户向表添加行1)将文本添加到3个输入字段,然后2)单击按钮。

在我向表中添加一行之前,我想确保它们没有相同的记录....

这是我现在只需添加记录的代码:

    $("#add_to_table").click(function()   {

            var contact_type=$("#contact_types option:selected").val();
            var call_order = $('#call_order').val();
            var contact_details = $('#contact_details').val();

            // add new logic here

            var rules_count = $('#rule_summary tbody tr').length - 1;  //minus one for the
            rules_count = rules_count + 1;

            var htmlstring = '<tr id="rule_' + rules_count + '">'
            htmlstring = htmlstring + '<td><input type="button" value="Remove" class="removeruleset"/></td>'
            htmlstring = htmlstring + '<td>' + contact_type + '</td>'
            htmlstring = htmlstring + '<td id=' + contact_details + '-' + rules_count + '>' + contact_details + '</td>'
            htmlstring = htmlstring + '<td>' + call_order + '</td>'
            htmlstring = htmlstring + '</tr>'
            htmlstring = htmlstring + '<tr><input type="hidden" name="contact_type"' + rules_count + ' value=' + contact_type  + '/></tr>'
            htmlstring = htmlstring + '<tr><input type="hidden" name="contact_details"' + rules_count + ' value=' + contact_details + '/></tr>'
            htmlstring = htmlstring + '<tr><input type="hidden" name="contact_details"' + rules_count + ' value=' + call_order + '/></tr>'
            $('#rule_summary tr:last').after(htmlstring);
    });

这段代码正在运行,虽然我确信有办法改进它。 我对jQuery和Javascript仍然非常环保。

这是我到目前为止所提出的改变代码的方法:(我将在这里添加注释“在这里添加新逻辑”。

var cell;
var result = $('#rule_summary tr').find('td:contains('+contact_details+')');

result.siblings()。css('background-color','red');

我基本上需要检查行中的第一个单元格和最后一个单元格是否也与我从输入字段中获取的值匹配。 我已经确认代码是通过对相邻单元格进行颜色编码来找到正确的单元格。 我只需要知道如何为每个兄弟提取值...一次一个。

编辑1

我还尝试在表中的字段中添加一个类,并按类名选择兄弟节点:

var cell;
var result = $('#rule_summary tr').find('td:contains('+contact_details+')');
result.siblings().css('background-color', 'red');

警报(result.siblings( 'td.call_order')VAL());

但警报一无所获。

这是你想要的吗?

If $('#rule_summary tr > td:contains('+contact_details+')').length {
    //theres a duplicate entry
}
else {
    //add new entry
}

编辑1要获取每个文本:

result.siblings().each(function(){
    alert(this.html());
});

编辑2

要获得具体的一个:

result.siblings(".yourId").html();

这是我提出的解决方案:

            var result = $('#rule_summary tr').find('td:contains('+contact_details+')'); //find cell in table with same contact_details information... 

                if (result.length > 0 ) {
                    if (result.siblings("#call_order").html() == call_order && result.siblings("#contact_type").html() == contact_type){
                        alert("Duplicate!");
                        return false;
                    }
                }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM