0

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

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

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

但是警报一无所获。

4

2 回答 2

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();
于 2013-06-18T19:39:01.093 回答
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;
                    }
                }
于 2013-06-18T20:40:18.203 回答