簡體   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