我将一个锚的.text()
附加到输入中,当它被拖放到输入时。
问题是我需要他们逗号,而不是重复:
如果我想在值'string 1'
时将'bla, ble, string1'
添加到输入中,我需要防止重复,
你会怎么做?
我的第一个猜测是通过','
进行爆炸并将其与for循环结合起来,但我认为这根本不是最优化的。
答案 0 :(得分:2)
基本理念
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
- 匹配您在[,$]
- 表示匹配逗号或字符串的结尾。答案 1 :(得分:0)
将现有的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());
}
答案 2 :(得分:0)
根据你的小提琴你可以;
var myVals = $("#YourElement").val().split(",");
var wantToAdd = "cakey";
if ($.inArray(wantToAdd, myVals) === -1)
myVals.push(wantToAdd);
$("#YourElement").val(myVals.join(","));
答案 3 :(得分:0)
我认为不需要reg exp或array -
var t=input.value, s= //text string;
if(t.indexOf(s)==-1)t.value=t+ ', '+s;