检查父div中的所有复选框,使用基于选择框值的jQuery onclick

时间:2013-09-09 14:35:12

标签: jquery checkbox

在这里,我想解决两个问题,

  1. 我有很多复选框,我想限制用户根据selectbox值选中复选框。
  2. 有两个div.checkbox,我想根据selectbox值点击父div时检查所有复选框
  3. 从上面,我已经解决了第一个问题。

    但我怎样才能解决第二个问题

    演示:Fiddle

    HTML

    <select id="count">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
    </select><br/><br/>
    
    <div class="checkbox" style='float:left;background:yellow;width:100px'>
      <input id="checkbox-1" type="checkbox" name="Data1" value="option1" />
      <label for="checkbox-1">HTML</label>
      <br />
      <input id="checkbox-2" type="checkbox" name="Data2" value="option2" />
      <label for="checkbox-2">CSS</label>
       <br /> 
        <input id="checkbox-3" type="checkbox" name="Data3" value="option3" />
      <label for="checkbox-3">HTML</label>
      <br />
    </div>
    
    <div class="checkbox" style='float:left;margin-left:100px;background:brown;width:100px'>
      <input id="checkbox-4" type="checkbox" name="Data4" value="option4" />
      <label for="checkbox-4">CSS</label>
        <br />
         <input id="checkbox-5" type="checkbox" name="Data5" value="option5" />
      <label for="checkbox-5">HTML</label>
      <br />
      <input id="checkbox-6" type="checkbox" name="Data6" value="option6" />
      <label for="checkbox-6">CSS</label>
    </div>
    

    的jQuery

    $(document).ready(function(){
        $('#count').on('change', function(){
            $('input[type=checkbox]').prop('checked', false);
        });
    
        $('input[type=checkbox]').on('change', function(){
            if($('input[type=checkbox]:checked').length > $('#count').val()){
                $(this).prop('checked', false);
            }
        });
    });
    

    任何人都可以帮助我。

2 个答案:

答案 0 :(得分:3)

这样的东西?

   $('.checkbox').on('click', function (e) {
     if (e.target.className == "checkbox") {
         var cnt = $('input[type="checkbox"]:checked').length;
         var cntSel = $('select').val();
         var fin = cntSel - cnt;
         $(this).find('input[type="checkbox"]:lt(' + fin + ')').prop('checked', true);
     }
 });

DEMO

答案 1 :(得分:1)

DEMO

更短的代码:)

$('input[type=checkbox]').on('change', function () {
        if ($('.checkbox').find('input[type=checkbox]').filter(':checked').length > $('#count').val()) {
            $(this).prop('checked', false);
        }
    });