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

时间:2013-06-18 19:24:45

标签: javascript jquery html-table

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

但警报一无所获。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

以下是我提出的解决方案:

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