我有一个复选框列表,如果选中其中一个,我会将复选框值附加到页面其他位置的输入字段中。如果未选中复选框,我将从隐藏输入字段中删除该值。发生的情况是,如果添加和删除值都很好,但当选中、取消选中、选中、取消选中等复选框时,它们会留下一系列逗号。
A)我应该担心吗
B)如果是,我应该如何改变我的添加/追加例程(见下文)或者是否有更好的方法来完成我正在做的事情?我希望最终得到一个像 0_1,0_2,41_4
这样的干净列表,而不是 0_1,,,,,,,,,,,,,,,,,0_2,,, ,41_4,,,,
.
<input type="text" value="0_1,0_2,41_4" id="EOStatus_SelLayers" />
// example of dataset: '0_1,0_2,41_4';
if ( xyz.hasClass("icon-check-empty") ) {
var existing_str = $('#EOStatus_SelLayers').val();
if (existing_str==null || existing_str==""){
//add
$('#EOStatus_SelLayers').val(id);
}
else {
//append
$('#EOStatus_SelLayers').val( existing_str + ',' + id);
}
}
else {
$(xyz).removeClass("icon-check").addClass("icon-check-empty");
var old_str = $('#EOStatus_SelLayers').val();
var new_str = old_str.replace(','+id,'');
var new_str = old_str.replace(id,'');
$('#EOStatus_SelLayers').val(new_str);
}
在 else 语句中,我可以这样做:
var new_str = old_str.replace(id,'');
var new_str = old_str.replace(',,',',');
最佳答案
您可以将 id 替换为空字符串,然后替换任何无关的逗号。
在三个地方可能会出现多余的逗号:
- 中间某处的双逗号(需要替换为单逗号)
- 前导逗号(需要删除)
- 结尾的逗号(需要删除)
您可以使用这两个替换操作解决所有三种情况:
.replace(/,,/g, ",").replace(/^,|,$/g, "");
它可能看起来像这样:
else {
$(xyz).removeClass("icon-check").addClass("icon-check-empty");
var old_str = $('#EOStatus_SelLayers').val();
var new_str = old_str.replace(id,'').replace(/,,/g, ",").replace(/^,|,$/g, "");
$('#EOStatus_SelLayers').val(new_str);
}
关于javascript - 如何从列表中删除多余的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239659/