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 = "";
}
}