【问题标题】:Copy check state of a set of checkboxes to another fieldset将一组复选框的检查状态复制到另一个字段集
【发布时间】:2011-09-20 08:38:18
【问题描述】:

我正在从事这样的fieldset #a项目。

<fieldset id="a">
      <input type="checkbox" name="c1" value="v1" checked="checked" />
      <input type="checkbox" name="c2" value="v2"/>
      <input type="checkbox" name="c3" value="v3"/>
</fieldset>

这个 fieldset #a checkbox : is checked 值是动态的。

我在同一页面上有另一个 fieldset #b

我想要的是在页面加载时分配/复制 checkbox : 从 fieldset #a 到 fieldset #b Serially 的值被选中[ 两个字段集都有相同数量的复选框。 ]

<fieldset id="b">
      <input type="checkbox" name="cc1" value="vv1"/>
      <input type="checkbox" name="cc2" value="vv2"/>
      <input type="checkbox" name="cc3" value="vv3"/>
</fieldset>

我怎样才能做到这一点?谢谢。

【问题讨论】:

    标签: jquery checkbox


    【解决方案1】:

    我无法让上面的东西正常工作,因此我尝试了下面的方法并且成功了。

    // lets uncheck all the checkboxes in first fieldset                                                                                             
    $('#b input[type=checkbox]').removeProp('checked');                                    
    
      cj('#b [type=checkbox]').each(function() {
         if (cj(this).prop('checked') ) {
             // here get the index of current element 
             // then modify below code to set prop checked
             cj('#a [type=checkbox]').prop('checked',true);
         }
    });
    

    希望对你有帮助!!!

    【讨论】:

      【解决方案2】:

      你可以这样使用:

      $( '#b' ).children( 'input:checkbox' ).each( function( i ) {
          var aChecked = $( '#a' ).children( 'input:checkbox' ).eq( i ).prop( 'checked' );
          if ( aChecked )
          {
              $( this ).prop( 'checked', true );
          }
          else
          {
              $( this ).removeProp( 'checked' );
          }
      } );
      

      【讨论】:

      • 我刚刚注意到,如果您不关心在字段集#b 中执行脚本之前检查了哪些复选框,@Niklas 代码可以完美运行。
      【解决方案3】:

      您可以使用您提到的选择器来执行此操作,然后循环每个值,获取它们的索引,并根据这些索引更新下一个字段集复选框。

      像这样:

      $('fieldset#a input[type="checkbox"]:checked').each(function(){   
          $('fieldset#b input[type="checkbox"]').eq($(this).index()).prop('checked',true);
      });
      

      示例:http://jsfiddle.net/niklasvh/hHnLu/

      【讨论】:

      • @MANnDAaR 我刚刚对它做了一个小修改,请改用它。
      • 如果在 fieldset #b 中选中了某些复选框,那么您的代码将失败。让我们看看我的:jsfiddle.net/nPnMa 和你的:jsfiddle.net/NVPN6
      • @CoolEsh 是的,我的回答没有考虑第二个字段集中的值是什么,因为这不是要求的一部分。最简单的解决方案是在我的示例中取消选中所有复选框:在复制之前使用:$('fieldset#b input[type="checkbox"]').prop('checked',false),就像这里jsfiddle.net/niklasvh/NVPN6/1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多