我一直在编写一个脚本来检查新输入'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。
答案 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
用于多个选择?我认为键入关键字更方便。