Javascript Jquery数组/字符串搜索

Javascript Jquery数组/字符串搜索,javascript,jquery,Javascript,Jquery,我一直在编写一个脚本来检查新输入的“value/string”是否已经存在,但到目前为止,我找不到正确/有效的解决方案 <input type="text" class="existingKeywords" value="string1, string2, string3"> <input type="text" class="newKeyword" value=""> 有人能告诉我,为什么它不起作用,或者有比这更好的方法吗 谢谢 非常感谢你们,剧本现在运行得很好。

我一直在编写一个脚本来检查新输入的“value/string”是否已经存在,但到目前为止,我找不到正确/有效的解决方案

<input type="text" class="existingKeywords" value="string1, string2, string3">
<input type="text" class="newKeyword" value=""> 
有人能告诉我,为什么它不起作用,或者有比这更好的方法吗

谢谢



非常感谢你们,剧本现在运行得很好。我想“投票支持”每个人的答案,但这需要15个声誉,而在撰写本文时,我只有13个声誉。再次感谢大家。

也许你可以使用好的
字符串。split()

大概是这样的:

var arr = $('.existingKeywords').val().split(',');
var newKey = $('.newKeyword').val();

if( jQuery.inArray(newKey, arr) != -1 ){
    alert('Found!');
}

也许您可以使用旧的
字符串.split()

大概是这样的:

var arr = $('.existingKeywords').val().split(',');
var newKey = $('.newKeyword').val();

if( jQuery.inArray(newKey, arr) != -1 ){
    alert('Found!');
}

这将检查不区分大小写的重复值,请尝试使用ID而不是类获取输入值,这样更安全

  var array    = $('.existingKeywords').val().split(',');
  var new_array =[] ;

  for(var key in array)
  new_array.push(array[key].toLowerCase());

  var newkeyword = $('.newKeyword').val().toLowerCase();

 if( $.inArray (newkeyword , new_array)!== -1 ){
     //found your value
  }

这将检查不区分大小写的重复值,请尝试使用ID而不是类获取输入值,这样更安全

  var array    = $('.existingKeywords').val().split(',');
  var new_array =[] ;

  for(var key in array)
  new_array.push(array[key].toLowerCase());

  var newkeyword = $('.newKeyword').val().toLowerCase();

 if( $.inArray (newkeyword , new_array)!== -1 ){
     //found your value
  }

它不工作,因为该行:

var arr    = JSON.parse("[" + $('.existingKeywords').val() + "]");
这样解释:

var arr    = JSON.parse("[string1, string2, string3]");
哪个不是正确的JSON-里面的字符串应该用引号括起来,否则
JSON.Parse
不知道什么是
string1

正如其他建议一样,您需要在此处使用
split
,我只想添加前导/尾随空格:

var arr = $('.existingKeywords').val().split(',').map(function(s) { return s.trim();})
var newKey = $('.newKeyword').val().trim();
if( $.inArray (newKey, arr) != -1 ){
  alert('Found!');
}

但是为什么不使用带有多个选项的
select
?我认为键入关键字更方便。

它不起作用,因为这行:

var arr    = JSON.parse("[" + $('.existingKeywords').val() + "]");
这样解释:

var arr    = JSON.parse("[string1, string2, string3]");
哪个不是正确的JSON-里面的字符串应该用引号括起来,否则
JSON.Parse
不知道什么是
string1

正如其他建议一样,您需要在此处使用
split
,我只想添加前导/尾随空格:

var arr = $('.existingKeywords').val().split(',').map(function(s) { return s.trim();})
var newKey = $('.newKeyword').val().trim();
if( $.inArray (newKey, arr) != -1 ){
  alert('Found!');
}

但是为什么不使用带有多个选项的
select
?键入我认为的关键字更方便。

我尝试过的可能重复的可能重复,但是.inArray()总是返回true,无论newKeyword的值是什么。这是因为
inArray
不返回true/false。当找到关键字时,它返回数组中的索引-从
0
arr.length-1
。当未找到时,它返回
-1
,这也被解释为
true
,多亏了GRaAL先生和您的回答,它现在工作得很好!我会回来一次,我的声誉达到15,投票支持每个人的答案^__^我尝试过,但是.inArray()总是返回true,不管newKeyword的值是什么。这是因为
inArray
不返回true/false。当找到关键字时,它返回数组中的索引-从
0
arr.length-1
。当未找到时,它返回
-1
,这也被解释为
true
,多亏了GRaAL先生和您的回答,它现在工作得很好!我会回来一次,我的声誉达到15,投票支持每个人的答案^__^谢谢你,格拉尔先生,我的剧本现在运行得很好,每个人的答案都是可以接受的答案。谢谢你,格拉尔先生,我的剧本现在运行得很好,每个人的答案都是可以接受的答案。