Javascript 如何将复选框表单字段从一个表单复制到另一个表单?

Javascript 如何将复选框表单字段从一个表单复制到另一个表单?,javascript,jquery,forms,Javascript,Jquery,Forms,我有一个用PHP构建的HTML表单,基本上显示了一个记录列表,这个记录列表有一个表单,因为它在每个记录旁边都有一个复选框,允许我对一组记录进行批量操作 我的问题是,我最近在每个记录下添加了一个评论部分,该评论部分允许快速发表评论,因此每个记录评论部分都有自己的表单,这当然打破了我的复选框表单,因为评论表单关闭 在记录列表的底部是一个下拉表单字段,其中列出了我可以对所选复选框记录执行的操作。这是不再工作的部分,因为它不能再访问复选框记录列表,因为它现在是另一个 因此,我想到了一个快速的解决方案,使

我有一个用PHP构建的HTML表单,基本上显示了一个记录列表,这个记录列表有一个表单,因为它在每个记录旁边都有一个复选框,允许我对一组记录进行批量操作

我的问题是,我最近在每个记录下添加了一个评论部分,该评论部分允许快速发表评论,因此每个记录评论部分都有自己的表单,这当然打破了我的复选框表单,因为评论表单关闭

在记录列表的底部是一个下拉表单字段,其中列出了我可以对所选复选框记录执行的操作。这是不再工作的部分,因为它不能再访问复选框记录列表,因为它现在是另一个

因此,我想到了一个快速的解决方案,使用JavaScript,如果我能以某种方式将hte checkbox表单字段数组复制到页面底部的新表单,以进行大规模记录更新

每个记录旁边的复选框字段现在看起来像这样

<input id="cb-select-1" type="checkbox" name="record_update[]" value="' . $dbresult->id . '">
更新了mass现在在页面上选择和取消选择我的复选框的代码

<script type="text/javascript">
    function checkAll(bx) {
      var cbs = document.getElementsByTagName("input");
      for(var i=0; i < cbs.length; i++) {
        if(cbs[i].type == "checkbox") {
          cbs[i].checked = bx.checked;
        }
      }
    }
</script>

功能检查全部(bx){
var cbs=document.getElementsByTagName(“输入”);
对于(变量i=0;i
您可以使用

在DocumentReady中,执行以下操作

$('#form-a').find('input:checkbox[name="record_update[]"]').each(function () {
    $(this).clone().appendTo('#form-b');
});

选中复选框时,将隐藏的输入添加到第二个表单:

$("input[name='record_update[]']").click(function(){
    var chkId = $(this).attr('id');
    var chkVal = $(this).val();
    if ($(this).is(':checked'))
        $('<input>').attr({
            type: 'hidden',
            id: 'input_'+chkId,
            name: 'input_'+chkId,
            value: chkVal
        }).appendTo('#secondForm');
    else
        //if isn't checked removes it
        $('#input_'+chkId).remove(); 
});

通过javascript,你是指jquery,因为你用它标记了问题吗?这是可能的,但正如@Huangism所说,你标记了jquery,这将是最好的解决方案。类似于:$('input:checkbox[name=record_update]')。每个(function(){$('anotherField').append($(this.value());});jQuery可以使用,我不确定是否要将复选框从一个表单复制到另一个表单?在这种情况下,请执行:$('input[name='record_update[]]:checked”)。每个(function(){$(this.clone()).appendTo('idOfOtherForm')); })让我know@adolfotcar我想,如果我将表单2上的表单字段隐藏起来,这几乎可以实现……我需要的是第二个表单提交一个字段,该字段包含已检查记录的所有ID号。因此,它需要从B实时更新,以便在检查和取消检查项目时检查和取消检查。我真正需要的是这是一个ID号列表,仅用于提交表单b时要发布在表单b上的检查项目感谢代码和示例。我现在看到的问题是,在页面加载后检查复选框,而不是克隆它们,我需要获得一个所有检查项目的列表,因为它们是检查和u-检查的,然后获取ID号列表并进行设置我意识到我可能会使用这个克隆,用CSS将表单2上的字段隐藏起来,所以现在唯一的障碍是在表单中检查和取消检查时添加和删除选中的项目,使其更具活力A@jasondavis那是完全不同的。我建议更新任务你需要准确了解你想要达到的目标,并消除噪音,或者就你现在的障碍部分提出问题。此外,你的ID不是唯一的。
$("input[name='record_update[]']").click(function(){
    var chkId = $(this).attr('id');
    var chkVal = $(this).val();
    if ($(this).is(':checked'))
        $('<input>').attr({
            type: 'hidden',
            id: 'input_'+chkId,
            name: 'input_'+chkId,
            value: chkVal
        }).appendTo('#secondForm');
    else
        //if isn't checked removes it
        $('#input_'+chkId).remove(); 
});
$("#chkAl").click(function(){
    $("input[name='record_update[]']").click(function(){
        //skips the already checked
        if (!($(this).is(':checked')))
            $(this).click();
    });
});