0

为了简化我的问题,我在没有解析 CSV 的情况下重写了代码,而是使用了一个保存数据的变量。

--代码编辑---

$(document).ready(function() {
    var qID = 'xxx';
    var source = ['text1', 'text2', 'etc3'];
    var source2 = ['text4', 'text5', 'etc6'];
    $('#question' + qID + ' input[type="text"]').change(function() {
        var validVal = 0;
        var inputVal = $(this).val();
        // Loop through the text and test the input value
        $(source).each(function(i) {
            if (inputVal == this) { // If a match is found...
                validVal = 1;
            }
        });
        // If a valid text was entered
        if (validVal == 1) { // A valid input
            alert("GOOD");
        } else { // An invalid input
            alert("NOT GOOD");
        }

        var validVal2 = 0;
        var inputVal2 = $(this).val();

       $(source2).each(function(j) {
            if (inputVal2 == this) { // If a match is found...
                validVal2 = 1;
            }
        });
        // If a valid text was entered
        if (validVal2 == 1) { // A valid input
            alert("GOOD2");
        } else { // An invalid input
            alert("NOT GOOD2");
        }
    });
});

该脚本适用于一个源(var source),但我想检查将产生不同警报的相同文本字段 2 个变量(source、source2)。

该脚本通过一个石灰调查表单运行,输入是一个简单的 [type="text"] 字段。

如何在同一文本字段中检查 2 个不同的文本数组?

4

1 回答 1

2

每当您发现自己在变量名称上放置计数器以创建系列时,您需要停下来思考一下您实际上在做什么。计算变量名称总是错误的。

使用数组。

var qID = 'xxx';

var source = [];
source.push(['text1', 'text2', 'etc']);
source.push(['text1', 'text2', 'etc44']);
source.push(['text15', 'text25', 'etc454']);

$('#question' + qID + ' input[type="text"]').change(function() {
    var valid = false;
    var inputVal = $(this).val();

    $.each(source, function(i, terms) {
        $.each(terms, function(i, term) {
            valid = inputVal === term;
            return !valid;  // returning false stops the .each() loop
        });
        return !valid;
    });

    if (valid) {
        alert("GOOD");
    } else {
        alert("NOT GOOD");
    }
});

表达上述嵌套循环的一种更有吸引力的方式是使用Array.

var valid = source.some(function (terms) {
    return terms.includes(inputVal);
});

在 ES6 语法中,这可以是单行的:

var valid = source.some(terms => terms.includes(inputVal));
于 2016-08-28T08:53:30.143 回答