1 つの方法は、セルのテキストを、テキストをキーとして持つ JavaScript の複雑な配列に「マップ」し、キーの量をセルの量と比較することです。キーよりもセルが多い場合は、同じテキストのセルがあることを意味します。
このためのコード:
var allCells = $('#tb_cartTable tr td:nth-child(2)');
var textMapping = {};
allCells.each(function() {
textMapping[$(this).text()] = true;
});
var count = 0;
for (var text in textMapping)
count++;
if (count !== allCells.length) {
alert("found duplicate values");
} else {
alert("no duplicates found");
}
ライブ テスト ケース。
上記では大文字と小文字が区別されることに注意してください。「hello」のセルと「Hello」のセルがある場合、それらは異なると見なされ、重複はないと見なされます。大文字と小文字が問題にならない場合、修正は行を次のように変更する単純なケースです。
textMapping[$(this).text().toLowerCase()] = true;
ケースを無視する更新されたテスト ケース。
inArray()
特定のケースでは、追加されたすべての値をプレーンな配列に保存してから、jQueryメソッドを使用して配列をチェックできます。
var $addedProductCodes = [];
$("#button_addItem").click(function(event)
{
$("span.errorText").remove();
$(".errorField").addClass("notErrorField");
//Change background color of textbox to normal
$("#frmRegisterForm :input[type='text']").attr('class','notErrorField');
$hasError = false;
$ele = $(event.target);
if($ele.is("input[type=button]"))
{
$td_productCode1=$("#td_productCode1").val();
var index = $.inArray($td_productCode1, $addedProductCodes);
if (index >= 0) {
alert("You already added this product code in line #" + (index + 1));
} else {
$text_productDescription= $("#text_productDescription").val();
$text_basicDealerPrice = $("#text_basicDealerPrice").val();
$('#table_viewContent').append("<tr><td>"+$text_productDescription+"</td><td>"+$td_productCode1+"</td><td><td>"+$text_basicDealerPrice+"</td><td><input type='button' name='deleteRow' id='btn_deleteRow' value='Delete' id='deleteItem' class='deleteItem button-red'></td></tr>");
$addedProductCodes.push($td_productCode1);
}
}
});
同じ製品コードを追加すると警告が表示され、挿入されないフィドルが更新されました。