【问题标题】:How to find a value in a table, and then grab data in adjacent cells如何在表格中找到一个值,然后抓取相邻单元格中的数据
【发布时间】:2013-06-15 03:48:43
【问题描述】:

我有一个页面,允许用户向表中添加行 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');

alert(result.siblings('td.call_order').val());

但是警报什么也没回来。

【问题讨论】:

    标签: javascript jquery html-table


    【解决方案1】:

    这是你想要的吗?

    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();
    

    【讨论】:

    • 好吧,我需要确认表中有一行对于所有 3 个字段具有相同的值,而不仅仅是 contact_dteails。
    • stackErr,您编辑的示例可能有效!但是不是循环遍历每个兄弟姐妹,是否可以根据兄弟姐妹的 id 检查 html() ?
    • 这只有在我可以 1)根据单元格的内容进行查找 2)获取匹配单元格所在的 ROW 的 ID 时才有用。3)然后我可以使用你的最后一个编辑以将其他 2 个字段与兄弟单元格进行比较...基于 id。
    • stackErr,我认为您的 EDIT2 中有错误。按 id 需要“#yourId”而不是“.yourId”
    【解决方案2】:

    这是我想出的解决方案:

                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;
                        }
                    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多