我的旗帜总是有真实的结果,我不知道为什么。如果没有重复,我需要得到标志值'true'。请看上面的小提琴:
if (readOnlyInput.length) {
flag = true;
inputs.not(readOnlyInput).closest('tr').css('background-color', 'red');
} else {
flag = true;
inputs.not(':first').closest('tr').css('background-color', 'red');
}
对于那些downvoted的人,我确实将标志设置为true
,因为条件是true
,我现在的问题是添加条件所以我可以设置它false
。将这些标志设置为true是正确的。现在,我应该添加条件,以便我可以将其设置为false,但我不知道我将添加什么条件。
答案 0 :(得分:1)
尝试在迭代开始时将flag
初始化为true
。
如果迭代中的当前条目违反规则(重复),请将flag
设置为false
。
<强>已更新强>:
$(document).on("click", '.tdAdd', function () {
var counter = $('#myTable tbody tr').length + 1;
var newRow = $("<tr>");
var cols = "";
cols += '<td><input type="button" value="Add Row" class="tdAdd"/></td>';
cols += '<td><input type="button" value="Delete" class="tdAdd"/></td>';
cols += '<td><input type="text" name="name' + counter + '"/></td>';
cols += '<td><input type="text" name="price' + counter + '"/></td>';
newRow.append(cols);
newRow.insertAfter($(this).closest("tr"));
});
$("#save").off("click").on("click", function () {
// Clear status of all elements
$('#myTable tr').css('background-color', 'none');
// Get all values first (Apple, Orange, etc) as strings
var allValues = $('#myTable td').filter(function () {
return $(this).closest('tr').children('td').index(this) === 2;
})
.find('input').map(function () {
return $(this).val();
}).toArray();
// Iterate unique values individually, to avoid marking a read-only input as duplicate
var flag = true;
for (var i = 0; i < allValues.length; i++) {
var value = allValues[i];
if (value == '') continue; //blank field
var inputs = $('#myTable td').filter(function () {
return $(this).closest('tr').children('td').index(this) === 2;
})
.find('input').filter(function () {
return $(this).val() == value;
});
// Check if this value is in one of the readonly
var readOnlyInput = inputs.filter(function () {
return $(this).is('[readonly]');
});
if (inputs.length > 1) {
flag = false;
if (readOnlyInput.length >= 1) {
inputs.not(readOnlyInput).closest('tr').css('background-color', 'red');
} else {
inputs.not(':first').closest('tr').css('background-color', 'red');
}
}
//console.log('Finished processing of ' + value);
}
alert(flag);
});
答案 1 :(得分:0)
因为if
和else
都有flag=true
的定义
要么
if (readOnlyInput.length) {
flag = true;
inputs.not(readOnlyInput).closest('tr').css('background-color', 'red');
} else {
flag = else;
inputs.not(':first').closest('tr').css('background-color', 'red');
}
或者
if (readOnlyInput.length) {
flag = else;
inputs.not(readOnlyInput).closest('tr').css('background-color', 'red');
} else {
flag = true;
inputs.not(':first').closest('tr').css('background-color', 'red');
}
取决于你:)