Javascript 验证数组中是否存在元素

Javascript 验证数组中是否存在元素,javascript,arrays,datalist,Javascript,Arrays,Datalist,我正在尝试开发一种算法,允许用户在文本字段中输入一个单词,如果这个单词已经存在于数据列表中,那么会向我发送一个警告,提示输入的单词已经存在 事实上,我的代码允许我这样做,但如果我尝试从数据列表中选择一个值,它将向我发送警报 这是我的密码: $(“输入[type='text'][name^='Q0']”)。更改(函数(){ verif(this.value,this.id); }); 功能验证(val,id){ 如果(val!=“”){ val=val.toLowerCase(); //1.以数

我正在尝试开发一种算法,允许用户在文本字段中输入一个单词,如果这个单词已经存在于数据列表中,那么会向我发送一个警告,提示输入的单词已经存在

事实上,我的代码允许我这样做,但如果我尝试从数据列表中选择一个值,它将向我发送警报

这是我的密码:

$(“输入[type='text'][name^='Q0']”)。更改(函数(){
verif(this.value,this.id);
});
功能验证(val,id){
如果(val!=“”){
val=val.toLowerCase();
//1.以数组形式获取数据列表值:
var数组=$('datalist option').map(函数(){
返回此.value;
}).get();
//2.检查数据列表中是否存在字符串:
对于(var i=0;i



而不是您的
如果
条件:

if (val.indexOf(array[i]) != -1) {
    //...
}
尝试:

我认为,如果只想检查数组中的呈现,也可以避免循环。您可以使用:

if (array.indexOf(val) === -1) {
    //...
}
更新

不带
循环完整代码和向
数据列表添加新选项的逻辑是:

$("input[type='text'][name^='Q0']").change(function () {
    verif(this.value, this.id);
});

function verif(val, id) {
    if (val !== "") {
        var datalist;

        // Caching datalist jQuery Object
        datalist = $("datalist");

        val = val.toLowerCase();

        // Array of actual options
        var array = datalist.find("option").map(function () {
            return this.value;
        }).get();

        // Append the new option
        if (array.indexOf(val) === -1) {
            datalist.append($("<option>", {
                value: val,
                text: val
            }));
        } else {
            alert("Word already entered.");
        }

        // Empty the input
        document.getElementById(id).value = "";
    }
}
$(“输入[type='text'][name^='Q0']”)。更改(函数(){
verif(this.value,this.id);
});
功能验证(val,id){
如果(val!==“”){
var数据表;
//缓存datalist jQuery对象
数据列表=$(“数据列表”);
val=val.toLowerCase();
//实际选项数组
var array=datalist.find(“option”).map(函数(){
返回此.value;
}).get();
//附加新选项
if(array.indexOf(val)=-1){
datalist.append($(“”){
值:val,
文本:val
}));
}否则{
警告(“已输入单词”);
}
//清空输入
document.getElementById(id).value=“”;
}
}

if(val.indexOf(array[i])!=-1){
更改为
if(array.indexOf(val)!=-1){
如何调用此函数
verif
?仍然存在相同的问题:(@takwamohamed你在browsr控制台中有错误吗?狙击手狼:No@takwamohamed警报未显示或输入未清空?您使用的浏览器是什么?请检查更新。@@Sniper Wolf:当我从数据列表中选择一个元素时,警报显示为“le mot existe dans la liste”,我使用chrome更新
$("input[type='text'][name^='Q0']").change(function () {
    verif(this.value, this.id);
});

function verif(val, id) {
    if (val !== "") {
        var datalist;

        // Caching datalist jQuery Object
        datalist = $("datalist");

        val = val.toLowerCase();

        // Array of actual options
        var array = datalist.find("option").map(function () {
            return this.value;
        }).get();

        // Append the new option
        if (array.indexOf(val) === -1) {
            datalist.append($("<option>", {
                value: val,
                text: val
            }));
        } else {
            alert("Word already entered.");
        }

        // Empty the input
        document.getElementById(id).value = "";
    }
}