我追加錨,以輸入的.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