jQuery 从 get().join(', ') 中删除两次

jQuery remove twice from get().join(', ')

我在同一页面的 2 个不同位置放置了 2 个复选框。

而且,我正在使用以下代码附加选中的值。

var checkboxes = $("#sercuisineslist input[type='checkbox'],#sercuisineslist2 input[type='checkbox']");
function docheck(){
    $('#myquery').val(
        checkboxes.filter(':checked').map(function(item) {
            return this.value;
        }).get().join(', ')
     );
}
checkboxes.on('change', function() {
    docheck();
});

当我在 2 个不同的区域选中同一个复选框时,相同的值会被附加两次,但这在我的场景中从来都不是问题。但是当我取消选中复选框时,我需要取消选中这两个区域,以确保附加值将被删除两次。

例如,如果选中非洲语,文本框 myquery 将显示为

非洲人,非洲人

当我取消选中时,如何确保非洲语被删除两次而不是一次?

我试过

checkboxes.on('uncheck', function() {
    docheck();
    docheck();
});

这对我没有帮助。

您可以使用它的名称取消选中相同的复选框,然后调用 docheck() 函数,该函数将只接受选中的复选框,请参见下面的代码

checkboxes.on('uncheck', function() {
    if(!this.checked)
   {
     var valueOfCheckbox = $(this).attr('value');
     $('input[type="checkbox"][value="'+valueOfCheckbox+'"]').prop('checked',false);
   }
    //call function to get checked values
    docheck();
});

JSFiddle Demo