我追加锚,以输入的.text()
当其拖放到它。如何检查是否“字符串1”是在“字符串1,字符串,STRING3 .. stringn”
的事情是,我需要他们逗号sepated和不重复:
如果我绑添加'string 1'
到输入时的值已经'bla, ble, string1'
,我需要防止被复制,
你会怎么做?
我的第一个猜测是,使通过','
的爆炸,并用结合它的循环,但我不认为这真的是优化的。
我追加锚,以输入的.text()
当其拖放到它。如何检查是否“字符串1”是在“字符串1,字符串,STRING3 .. stringn”
的事情是,我需要他们逗号sepated和不重复:
如果我绑添加'string 1'
到输入时的值已经'bla, ble, string1'
,我需要防止被复制,
你会怎么做?
我的第一个猜测是,使通过','
的爆炸,并用结合它的循环,但我不认为这真的是优化的。
基本思路
function addParameter(str, param) {
var re = new RegExp("[^,]\\s?" + param + "[,$]","g");
if(!re.test(str)) {
str += ((str.length>0) ? ", " : "") + param;
}
return str;
}
var orgStr = "abc, def, hij";
//This exists so it will not be added
var newStr = addParameter(orgStr, "def");
console.log(newStr);
//This does not exist so it will be added to the end
newStr = addParameter(orgStr, "xyz");
console.log(newStr);
解释的正则表达式
[^,]\\s?
- 说比赛开始字符串或逗号后跟一个可选的空格字符param
- 你的字符串相匹配传入[,$]
- 说匹配一个逗号或字符串的结尾。转换现有的CSV字符串数组,你的附加价值,然后将其转换回字符串:
//Create an array from the CSV list
var myVals = $("#YourElement").val().split(",");
var isDupe = false;
for(var i = 0; i < myVals.length; i++) {
if(myVals[i].indexOf("YourNewValue") != -1) {
isDupe = true;
break;
}
}
//use .push() to append your value to the end of the array
if(!isDupe) {
myVals.push("YourNewValue");
//Invoking .toString() on an array creates a CSV list
$("#YourElement").val(myVals.toString());
}
这里的a working fiddle。
,但事情是,我试图防止这种情况:http://jsfiddle.net/sc9fq/2/ – 2012-01-27 14:09:03
@ToniMichelCaubet,请参阅更新答案为欺骗检查。 – 2012-01-27 14:13:06
@epascarello,好点 - 更新。 – 2012-01-27 14:15:33
根据您的小提琴即可;
var myVals = $("#YourElement").val().split(",");
var wantToAdd = "cakey";
if ($.inArray(wantToAdd, myVals) === -1)
myVals.push(wantToAdd);
$("#YourElement").val(myVals.join(","));
我没有看到REG EXP需要或基于阵列
var t=input.value, s= //text string;
if(t.indexOf(s)==-1)t.value=t+ ', '+s;
为什么不使用正则表达式来两个逗号之间的匹配'string1'?当然,在构建正则表达式时,你需要考虑它是第一个还是最后一个元素。 – 2012-01-27 14:03:44
顺便说一句,有一个很好的理由,你需要存储一个大字符串?为什么不保持更容易操作“爆炸”数组呢? – hugomg 2012-01-27 14:13:30
http://stackoverflow.com/questions/890782/javascript-function-inarray – Stefan 2012-01-27 14:15:10