我有一个文本输入,每次用户选择新标签(新标签创建新的列表元素)时,该文本输入都会更新,并且这些列表元素会映射到逗号分隔的列表中,然后将其添加到文本输入的值中。
文本输入的值可能如下所示,
PHP, C#, C, C++
用户可以单击标签将其从文本输入中删除,但是我无法将其从输入字段中的逗号分隔列表中删除。
我的标签删除方法代码如下所示。
var array = $("#job_tags_input").val().split(",");
我虽然这会给出我输入中的值的数组,但我在控制台中得到的所有内容是我执行 console.log(array) 时,
["C", " PHP", " Perl", " C#", " "]
如果“C”的标签被删除,我该如何将其从输入字段中删除?
我的JS
if($("#job_tags").get(0)) {
$("#job_tags").tagHandler({
assignedTags: [ 'C', 'Perl', 'PHP' ],
availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ],
autocomplete: true,
onAdd: function(tag) {
var s = $("#job_tags li").map(function(){
return $(this).text();
}).get().join(",");
s = s.substring(0, s.length - 1);
console.log(s);
$('#job_tags_input').val(s);
},
onDelete: function(tag) {
/*$("#job_tags_input").val( $("#job_tags li").map(function(){
return $(this).text();
}).get().join(", "));*/
var array = $("#job_tags_input").val().split(",");
array = $.grep(array, function(value, i) {
return ( value.indexOf(tag) == 0 );
});
array = array.join(",");
console.log(array);
$('#job_tags_input').val(array);
}
});
}
最佳答案
您可以先拼接该项目:
array.splice(array.indexOf("C"), 1); // remove one item at the position of "C"
然后将元素连接在一起并更新文本框:
$("#job_tags_input").val(array.join()); // uses "," by default
但是,最好按 ", "
进行拆分,因为空格是分隔符的一部分。
关于javascript - 逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490581/