javascript - jQuery 检查多个 CSV 列表

标签 javascript jquery jquery-csv

为了简化我的问题,我重写了代码,没有解析 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 个不同的文本数组?

最佳答案

每当您发现自己在变量名称上添加计数器来创建一个系列时,您都需要停下来思考一下您实际上在那里做了什么。指定计数变量名称​​总是错误。

使用数组。

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));

关于javascript - jQuery 检查多个 CSV 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921521/

相关文章:

javascript - CSV 文件未重新加载(Google GeoCharts)

javascript - 如果我们在 JavaScript 中填充 fn.bind(),为什么你必须检查 "this"的类型?

javascript - 类型错误 : Cannot read propety of undefined. Apollo Server 和 Sequelize 的 GraphQL 突变

javascript - javascript中是否可以进行多重继承?

javascript - Q promise 传播错误和异常

javascript - 如果是同一个类(class),则淡入/淡出

javascript - 跨域请求 - javascript

javascript - 动态插入第三方的 javascript 广告代码不会在 div 中居中吗?

javascript - jQuery UI : Draggable element is moving inside the sidebar. 为什么?

javascript - 解析没有标准分隔符的 CSV 文件