Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在表中查找值,然后在相邻单元格中获取数据_Javascript_Jquery_Html Table - Fatal编程技术网

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

Javascript 如何在表中查找值,然后在相邻单元格中获取数据,javascript,jquery,html-table,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()

我有一个页面,允许用户在表中添加行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);
    });
result.sides().css('background-color','red')

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

编辑1

我还尝试向表中的字段添加一个类,并按类名选择同级:

var cell;
var result = $('#rule_summary tr').find('td:contains('+contact_details+')');
result.siblings().css('background-color', 'red');
警报(result.sibbins('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;
                    }
                }

嗯,我需要确认表中有一行的所有3个字段的值都相同,而不仅仅是联系_dteails.stackErr,您编辑的示例可能会起作用!但是,不必遍历每个同级,是否可以根据同级的ID检查html()?这只有在1)根据单元格的内容进行查找2)获取匹配单元格所在行的ID时才有用。3) 然后我可以使用您上次的编辑将其他两个字段与同级单元格进行比较。。。根据id.stackErr,我认为您的EDIT2中有一个bug。按id需要“#yourId”而不是“.yourId”
            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;
                    }
                }