javascript - 如何从列表中删除多余的逗号

标签 javascript jquery

我有一个复选框列表,如果选中其中一个,我会将复选框值附加到页面其他位置的输入字段中。如果未选中复选框,我将从隐藏输入字段中删除该值。发生的情况是,如果添加和删除值都很好,但当选中、取消选中、选中、取消选中等复选框时,它们会留下一系列逗号。

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 替换为空字符串,然后替换任何无关的逗号。

在三个地方可能会出现多余的逗号:

  1. 中间某处的双逗号(需要替换为单逗号)
  2. 前导逗号(需要删除)
  3. 结尾的逗号(需要删除)

您可以使用这两个替换操作解决所有三种情况:

.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/

相关文章:

javascript - 如何在 Javascript 中创建 OOP 类

javascript - 如何通过名称查找每个 td 输入及其各自的 id、值

javascript - 您将数据模型放在 dojo 应用程序的什么位置?

带警报的 JavaScript 循环

javascript - 相同的图像以秒为间隔随机出现在 3 个不同的 div 中

javascript - 如何在 jQuery 中动态设置进度条值?

javascript - jQuery UI 自动完成 JSON 错误

javascript - Bootstrap 4 : Convert button-group to dropdown for small screens

javascript - 为什么我的鼠标悬停层没有显示在其他浏览器上?

php - 在不提交的情况下保存和加载表单中的数据