【问题标题】:Adding new input:checkbox and not has value添加新的输入:复选框并且没有价值
【发布时间】:2011-10-02 18:03:45
【问题描述】:

我在添加新的input:checkbox 时遇到问题,当我添加新的输入并检查它时,下一个设置单击按钮我没有检查input:checkbox 的值。怎么解决?

演示http://jsfiddle.net/G4QRp/

$(function () {
    $('a.add_input').live('click', function (event) {
        event.preventDefault();
        var $class = '.' + $(this).closest('div.find_input').find('div').attr('class').split(" ")[0];
        var size_un = $($class).length;
        var $this = $(this),
            $div = $this.closest($class),
            $clone = $div.clone().hide().insertAfter($div).fadeIn('slow');
        $clone.find('.adda').not(':has(.remove_input)').append('<div class="mediumCell"><a href="" class="remove_input"></a></div>');
        $clone.find('input').val('').prop('checked', false);
        $this.remove();
        var size_un = $($class).length---1;
        $($class + ':last input:checkbox').prop('name', 'checkbox_units[' + size_un + '][]');
        console.log($($class + ':last input:checkbox').prop('name'));
    });
});

【问题讨论】:

  • 我仍然不清楚预期的行为是什么。
  • 您能否简化代码以查明实际问题?
  • 如果您在用英语解释问题时遇到问题,请尝试在文本中附上您希望复选框的样子的屏幕截图
  • var size_un = $($class).length---1; 可能是问题所在。我不知道解释器应该如何解析它,但 length---1 在 Firefox 6 上引发 RangeError
  • 看到这个:jsfiddle.net/G4QRp/2 不是size_un 的问题。我的意思是,当您在复选框(在新输入中)添加新输入和检查(选择)然后单击按钮 Click me 时,您没有从单击的复选框中获得价值,为什么?

标签: javascript jquery html arrays


【解决方案1】:

您的代码总是清除它添加的所有复选框的值:

    $clone.find('input').val('').prop('checked', false);

它工作正常,虽然它很混乱。警报正确显示了选中的复选框,但是由于您的代码已将每个复选框的值设置为 '',所以它是空的。如果你像这样改变它:

    $clone.find('input').prop('checked', false);

它显示的值与原始复选框相同。

您可能需要考虑使用“data-”属性而不是“class”字符串来存储诸如“add_units”类名之类的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 2013-12-01
    相关资源
    最近更新 更多