试图捕获布尔值false的另一个条件

时间:2014-11-17 07:20:13

标签: jquery

FIDDLE DEMO

我的旗帜总是有真实的结果,我不知道为什么。如果没有重复,我需要得到标志值'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,但我不知道我将添加什么条件。

2 个答案:

答案 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)

因为ifelse都有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');
}

取决于你:)