2017-07-06 124 views
0

我需要一點幫助來解決我的問題。我有一個表與MySQL/PHP while循環。和兩個文本框與像標記多個文本框值合併在while循環表中

<tbody> 
<?php while($row = mysqli_fetch_assoc($result)){ ?> 
<tr> 
<td><input name="telephone_number" type="text" value="<?php echo $row['telephone_number'];?>"/></td> 
<td><input name="priority" type="text" value="<?php echo $row['priority'];?>" /></td> 
<td>.....</td> 
<td>.....</td> 
</tr> 
<?php } ?> 
</tbody> 

查詢值現在讓我們說,如果電話號碼val- 888和優先級val- 0乾脆兩者​​搭配其他行,然後用彩色類的所有匹配的行(TR)說class_matched。

到目前爲止我可以用一個文本框與文本框的背景顏色與幫助的計算器。但不能找出兩個文本框,並在tr中添加類。

$('#table1').find("input[name='telephone_number']").each(function() { 
if ($this.val().length > 1) { 
$(this).addClass('class_matched'); 
} 
}); 

在此先感謝您的幫助。真誠道歉,如果重複。

編輯:我也想實現兩個文本框的變化事件。

+0

能否請您詳細闡述更多 – Puneet

+0

我會嘗試這樣做在PHP。如果下一行具有相同的值,將class_matched類添加到tr,則按數字,優先級排序查詢,並跟蹤您添加的最後一行。 – James

+0

就像我說的,如果row1的電話號碼值是 - 888,並且優先級值是1,row2的電話號碼值是 - 888,並且優先級值是1,那麼兩者都是相同的,因此row1和row2將被標記爲同一類。否則,如果第2行的電話號碼值是 - 888,並且優先級值是2,則不分配類。 – Rezbin

回答

0

這裏我終於如何做了。它爲我工作,我想要的。如果有人讓它更好,我仍然會接受。感謝所有的stackoverflow。

here is my JSfiddle:

function find_match() { 
 
var allName = []; 
 

 
$('#table1 tbody tr').each(function(index1, value1) { 
 
    var tele_loop1 = $(this).find("input[name='telephone_number']").val(); 
 
    var priority_loop1 = $(this).find("input[name='priority']").val(); 
 
    var tel_p_loop1 = tele_loop1 +'-'+ priority_loop1; 
 
    allName.push(tel_p_loop1); 
 
}); 
 

 

 

 
$('#table1 tbody tr').each(function(index1, value1) { 
 
    var tele_loop2 = $(this).find("input[name='telephone_number']").val(); 
 
    var priority_loop2 = $(this).find("input[name='priority']").val(); 
 
    var tel_p_loop2 = tele_loop2 +'-'+ priority_loop2; 
 

 
var itemsFound = $.grep(allName, function (elem) { 
 
           return elem == tel_p_loop2; 
 
          }).length; \t \t \t \t \t \t  
 
    if(itemsFound > 1){ 
 
\t $(this).addClass('class_matched'); 
 
    }else{ 
 
\t $(this).removeClass(); 
 
    } 
 

 
}); 
 
}; 
 

 

 
$(document).ready(function() { 
 
     find_match(); 
 
      $('#table1 tbody tr').on('input', '.num_p', function() { 
 
      $(this).attr('value',this.value) 
 
     }); 
 
\t \t $('#table1 tbody tr').on('input', '.num_p',find_match); 
 
    });
.class_matched { 
 
background: #99FF32; 
 
} 
 

 
.sortable { 
 
font-family: 'Open Sans', sans-serif; 
 
    border-collapse: collapse; 
 
    border: 1px solid #38678f; 
 
    margin: 5px auto; 
 
    background: white; 
 
    animation: float 5s infinite; 
 
} 
 

 
.sortable th { 
 
    background: steelblue; 
 
    height: 35px; 
 
    font-weight: bold; 
 
    text-shadow: 0 1px 0 #38678f; 
 
    color: white; 
 
    border: 1px solid #38678f; 
 
    box-shadow: inset 0px 1px 2px #568ebd; 
 
    transition: all 0.2s; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<table id="table1" class="sortable"> 
 
<thead> 
 
    <tr> 
 
    <th width="6%"> Number</th> 
 
    <th width="4%">Priority</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="111" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
    <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="222" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
    <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="333" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
     <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="111" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
     <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="222" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
     <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="444" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
     <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="111" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="1" /></td> 
 
    </tr> 
 
     <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="333" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
     <tr> 
 
     <td><input class="num_p" name="telephone_number" type="text" value="333" /></td> 
 
     <td><input class="num_p" name="priority" type="text" value="2" /></td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

此代碼無法正常工作,請參閱[小提琴](https://jsfiddle.net/ersamrow/c5fz6own/) –

+0

其失敗,而1. num = 222,Prio = 0和2. num = 22,Prio = 20它的機器這些也 –

+0

@Govind你的權利。我必須像你一樣單獨評估。感謝您展示洞。 ;-) – Rezbin

0
  1. 你需要兩個循環
  2. 商店外環VAL然後用第二循環
  3. 添加類,如果用內循環相匹配

$('#table1 tr').each(function(i, e) { 
 
    var ot = $(this).find("input[name='telephone_number']").val(); 
 
    var op = $(this).find("input[name='priority']").val(); 
 
    var isMatched = false; 
 
    $('#table1 tr').each(function(j, k) { 
 
    if (j > i) { 
 
     var it = $(this).find("input[name='telephone_number']").val(); 
 
     var ip = $(this).find("input[name='priority']").val(); 
 
     if (it == ot && ip == op) { 
 
     $(this).addClass('class_matched'); 
 
     isMatched = true; 
 
     } 
 
    } 
 
    }); 
 
    if (isMatched) { 
 
    $(this).addClass('class_matched'); 
 
    } 
 
});
.class_matched { 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<table id="table1"> 
 
    <tbody> 
 
    <tr> 
 
     <td><input name="telephone_number" type="text" value="888" /></td> 
 
     <td><input name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
    <tr> 
 
     <td><input name="telephone_number" type="text" value="999" /></td> 
 
     <td><input name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
    <tr> 
 
     <td><input name="telephone_number" type="text" value="888" /></td> 
 
     <td><input name="priority" type="text" value="0" /></td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

非常感謝。只是從最後7天開始嘗試,並且花了7秒才解決了我的問題。然而,50行表循環50 * 50 = 2500次。無論如何提高性能? – Rezbin

+0

任何人都可以幫我解決這個添加更改事件嗎?到目前爲止親愛的Govind Samrow解決了我的問題,但我試圖添加更改事件,但效果不佳。 – Rezbin

+0

我認爲它的不同問題,你需要問這個新的問題 –