Jquery数组/字符串搜索

时间:2014-01-30 07:35:37

标签: javascript jquery

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

<input type="text" class="existingKeywords" value="string1, string2, string3">
<input type="text" class="newKeyword" value=""> 

.newKeyword的值将对用户输入进行保护,单击提交按钮后,它将检查newKeyword.val()是否已存在于.existingKeywords.val();用','

分隔

我试过但返回'json parse unexpected character'

  var arr    = JSON.parse("[" + $('.existingKeywords').val() + "]");
  var newKey = $('.newKeyword').val();
  if( jQuery.inArray (newKey, arr) ){
    alert('Found!');
  }

有人可以告诉我,为什么它不起作用或者有更好的方法吗?

谢谢!


非常感谢你们,脚本现在完美无缺。我想'投票'每个人的答案,但它需要15个声誉,而在撰写本文时,我只有13个声望。每个人都是gracias。

4 个答案:

答案 0 :(得分:1)

也许你可以使用好的String.split()

这样的事情:

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

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

答案 1 :(得分:1)

 var arr    = $('.existingKeywords').val().split(',');
  var newKey = $('.newKeyword').val();
  if( $.inArray (newKey, arr) ){
    alert('Found!');
  }

答案 2 :(得分:1)

这也会检查不区分大小写的重复值,请尝试使用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
  }

答案 3 :(得分:1)

它不起作用,因为这一行:

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用于多个选择?我认为键入关键字更方便。