jQuery:选中,然后将每个选中的值添加到字符串中

jQuery:选中,然后将每个选中的值添加到字符串中,jquery,each,checked,Jquery,Each,Checked,我有一个表单,我希望已选中内容的值以div的形式输出到屏幕。我的代码忽略了:checked部分,选中复选框时,它会将值输出到div,但未选中时不会将其删除 此外,它并没有将它们添加到列表中,而是将上次单击的复选框值替换为旧值 这是我的密码: jQuery('.detectChangeCheckbox').click(function(){ jQuery(".detectChangeCheckbox").change(function () { var

我有一个表单,我希望已选中内容的值以div的形式输出到屏幕。我的代码忽略了:checked部分,选中复选框时,它会将值输出到div,但未选中时不会将其删除

此外,它并没有将它们添加到列表中,而是将上次单击的复选框值替换为旧值

这是我的密码:

    jQuery('.detectChangeCheckbox').click(function(){

        jQuery(".detectChangeCheckbox").change(function () {

        var stepId = jQuery(this).attr("rel");

        var str = "You have selected: ";

        if(jQuery("detectChangeCheckbox:checked")){

            jQuery(this).each(function () {

                str += jQuery(this).val() + " ";

            });

        };

        jQuery("#liveResult"+stepId).text(str);

  })

  .change();

  });

谢谢

在您的if条件下,问题似乎在这里:

if(jQuery("detectChangeCheckbox:checked")){
这里您遗漏了一个
,它是jQuery中的css类选择器表示,您应该检查checked的长度:

if(jQuery(".detectChangeCheckbox:checked").length){

注: 您不需要使用
click
handler来包装它,
change
事件就可以了


相反,我建议您这样做:

jQuery(".detectChangeCheckbox").change(function () {
    var stepId = jQuery(this).attr("rel");
    var idx    = $(this).index();
    var arr    = [];
    ($(this).is(':checked')) ? arr.push(this.value) : arr.splice(1, idx);
    jQuery("#liveResult"+stepId).text(arr.join());
});

两件事-不确定为什么要在
中嵌套
单击
。更改
-不要这样做,除非您不想在单击后绑定
更改
事件。我只能猜这是你想要的代码:

jQuery(".detectChangeCheckbox").change(function () {
    var stepID = jQuery(this).attr("rel");
    if (this.checked) {
        var checkedValues = jQuery(".detectChangeCheckbox:checked").map(function() {
            return this.value;
        }).get().join(" ");
        jQuery("#liveResult"+stepID).text(checkedValues);
    }
});

获取该
。从
单击
方法中更改
方法。。另外,
jQuery(“detectChangeCheckbox:checked”)
正在查找
的标记。单击后,如果您单击它,则会注册它已更改。要添加到末尾而不是使用.append()而不是.text()替换,请使用.append()谢谢!错过比赛是愚蠢的错误。类选择器从一开始就关闭