美好的一天,
我有一个表格,可以检测模糊的重复行,我已经实现了它,代码来自stack exchange及其jsfiddle,但我很困惑如何删除类'复制'当我将值更改为唯一值时。
继承我的HTML
<table class="table" id="FS-table">
<thead>
<tr>
<th width="10%">Format Code</th>
<th width="60%">Account Title</th>
<th width="30%">Accound Number</th>
</tr>
</thead>
<tbody>
<tr>
<td><input id="rowId-1" type="text" class="fs-format-code form-control"></td>
<td><span class="accound-desc">Cash on Hand</span></td>
<td><span class="account-number">11110</span></td>
</tr>
<tr>
<td><input id="rowId-2" type="text" class="fs-format-code form-control"></td>
<td><span class="accound-desc">Petty Cash Fund</span></td>
<td><span class="account-number">11120</span></td>
</tr>
<tr>
<td><input id="rowId-3" type="text" class="fs-format-code form-control"></td>
<td><span class="accound-desc">CCash in Bank</span></td>
<td><span class="account-number">11110</span></td>
</tr>
<tr>
<td><input id="rowId-4" type="text" class="fs-format-code form-control"></td>
<td><span class="accound-desc">Accounts Receivable - Trade</span></td>
<td><span class="account-number">11320</span></td>
</tr>
<tr>
<td><input id="rowId-5" type="text" class="fs-format-code form-control"></td>
<td><span class="accound-desc">Allowance for Bad Debts</span></td>
<td><span class="account-number">11110</span></td>
</tr>
</tbody>
</table>
和我的js:
$('input.fs-format-code').on('blur', function(){
var tableRows = $("#FS-table tbody tr");
tableRows.each(function(n){
var FsInput = $(this).find('input.fs-format-code');
var id = FsInput.attr('id');
var row = $(this).find('input.fs-format-code').val();
tableRows.each(function(n){
var id2 = $(this).find('input.fs-format-code').attr('id');
// console.log("id2: "+id2 +", "+"id :"+id);
if(id2 != id){
var row2 = $(this).find('input.fs-format-code').val();
console.log("row2 :"+row2 + ", row :"+row);
if (row2 == row)
{
$(this).addClass('duplicate');
}
else{
// $(this).removeClass('duplicate');
}
}
});
});
});
如果我添加了else语句,它将再次删除添加的&#39;重复的&#39; class,我该如何正确地做到这一点,以便它能够正确地检测重复值?谢谢你的帮助。如果您发现我的问题很难理解,请告诉我,以便我可以立即编辑。祝你有个美好的一天!
答案 0 :(得分:1)
您可以在函数开头删除所有重复的类,然后在内部循环中排除所有标记为重复的类:
$('input.fs-format-code').on('blur', function(){
var tableRows = $("#FS-table tbody tr");
/*-- Remove All Duplicate Classes --*/
tableRows.filter(".duplicate").removeClass("duplicate");
tableRows.each(function(n){
var FsInput = $(this).find('input.fs-format-code');
var id = FsInput.attr('id');
var row = $(this).find('input.fs-format-code').val();
/* -- Exclude Duplicates -- */
tableRows.not(".duplicate").each(function(n){
var id2 = $(this).find('input.fs-format-code').attr('id');
// console.log("id2: "+id2 +", "+"id :"+id);
if(id2 != id){
var row2 = $(this).find('input.fs-format-code').val();
console.log("row2 :"+row2 + ", row :"+row);
if (row2 == row)
{
$(this).addClass('duplicate');
}
}
});
});
});
它怀疑它是最有效的方法,但它可能是对当前代码最简单的修改之一。
在此更新小提琴:http://jsfiddle.net/Kcas2/70/
答案 1 :(得分:0)
为了不更改您的代码, 有一个技巧可以确定女巫输入与另一个女巫输入相同,只需改变你的代码if / else就像这样:
if (row2 == row && row2 != '' && row != '')
{
$(this).addClass('duplicate'+id);
}
else{
$(this).removeClass('duplicate'+id);
}