To ensure that Form Grid data do not have duplicates
Change "gridId" to your form grid "Field Id".
To compare certain columns only instead of all columns, modify '$(row).find(".grid-cell")' to '$(row).find("[KB:column_key=field1], [KB:column_key=field2]")'. (Take note that this is separated by a comma.)
<script>
$(document).ready(function(){
var formGridFieldId = "gridId";
//run when form grid value change
$("[name="+formGridFieldId+"]").live("change", function(){
var table = $(this).find("table");
//get last added row
var addedRow = $(table).find("tr.grid-row:last-child");
var duplicate = false;
//Loop all the row and compare all the field
$(table).find("tr.grid-row").each(function(){
var row = $(this);
if ($(row).attr("id") != $(addedRow).attr("id")) {
var similar = true;
//Loop all field
//Change '$(row).find(".grid-cell")' to '$(row).find("[column_key=field1], [column_key=field2]")'
//if only want to compare to certain fields. Separate with comma.
$(row).find(".grid-cell").each(function(){
var field = $(this);
var columnKey = $(field).attr("column_key");
var value = $(field).text();
var newValue = $(addedRow).find("[column_key="+columnKey+"]").text();
if (value != newValue) {
similar = false;
return false;
}
});
if (similar) {
duplicate = true;
return false;
}
}
});
//if record is duplicate, remove it
if (duplicate) {
$(addedRow).remove();
}
});
});
</script> |