2013-04-27 3 views
0

Как добавить флажок, который может проверять все флажки, если он установлен?check all checkbox with hide

Как добавить функциональность «показать/скрыть» в поле «Проверить все». Кнопка отправки также должна отображаться, если установлен флажок «Проверить все».

$(document).ready(function() { 

var $submit = $("#submit_prog").hide(), 
    $cbs = $('input[name="prog"]').click(function() { 
     $submit.toggle($cbs.is(":checked")); 
    }); 

}); 

<input type="checkbox" name="?" value="?"> // check all checkbox 

<input type="checkbox" name="prog" value="1"> 
<input type="checkbox" name="prog" value="2"> 

<input type="submit" id="submit_prog" value='Submit' /> 
+0

Вы пробовали это ?: [http://stackoverflow.com/a/7720869/1207958](http://stackoverflow.com/a/7720869/1207958) – svante

ответ

1
  1. предположение идентификатор выбора всех chckbox является selall.
  2. создать класс для всех флажком вы хотите выбрать с помощью выбрать все
$('#selall').click(function(event) { 
    if(this.checked) { 
     // Iterate each checkbox 
     $('.yourchckbox').each(function() { 
      this.checked = true;       
     }); 
     $('#submit_prog').show(); 
    } 
    else { 
    $('.yourchckbox').each(function() 
    { this.checked = false; }); 
    $('#submit_prog').hide() 
    } 
}); 
    $('.yourchckbox').click(function(event) { 
    if(!(this.checked)) { 
    $('#selall').prop('checked', false); 
    } 

    }); 
+0

Что относительно кнопки отправки? Он по-прежнему скрыт, когда я проверяю флажок check all. –

+0

отредактировал мой ответ. извините, пропустил часть отправки, читая вопрос. –

+0

Теперь это работает. Не могли бы вы назвать функцию, что, если я хотя бы снимет флажок, отметьте галочкой флажок «check all». Благодарю. –

0

Попробуйте

$('input:checkbox[name!="prog"]').click(function(){ 
    $('input:checkbox[name="prog"]').prop('checked', $(this).is(':checked')) 
}) 

Или, если вы можете изменить флажок идентификатор для selall

$('#selall').click(function(){ 
    $('input:checkbox').prop('checked', $(this).is(':checked')) 
}) 
+0

кнопка отправки по-прежнему скрыта. –

0

It s довольно просто.

позволяет Называем этот флажок <input type="checkbox" name="check_all" value="1">

А теперь добавить событие:

$('input[name="check_all"]').click(function() { 
    if($(this).is(':checked')) { 
     $('input[name="prog"]').attr('checked', 'checked'); 
    } else { 
     $('input[name="prog"]').removeAttr('checked'); 
    } 

    $('input[name="prog"]:eq(0)').change(); //firing event which we will catch 
}); 

Тогда мы должны проверить, если все input[name="prog"] проверяются:

$('input[name="prog"]').change(function() { 
    if($('input[name="prog"]:not(:checked)').length) { 
     $('#submit_prog').hide(); 
    } else { 
     $('#submit_prog').show(); 
    } 
}); 
+0

Используйте свойства вместо атрибутов для управления состоянием флажка. – Musa

0

выбрать все флажки на #all проверки и проверки #all, когда все флажки отмечены

<SCRIPT language="javascript"> 
    $(function(){ 

     $("#all").click(function() { 
       $('.one').attr('checked', this.checked); 
    if (this.checked) {$('#submit_prog').hide();} 
(this.checked)?$('#submit_prog').show():$('#submit_prog').hide(); 
     }); 

     $(".one").click(function(){ 

      if($(".one").length == $(".one:checked").length) { 
       $("#all").attr("checked", "checked"); 
       $('#submit_prog').show(); 
      } else { 
       $("#all").removeAttr("checked"); 
$('#submit_prog').hide(); 
      } 

     }); 
    }); 
    </SCRIPT> 

Изменить идентификатор и класс флажков

<input type="checkbox" id="all" > // check all checkbox 

<input type="checkbox" name="prog" class="one" value="1"> 
<input type="checkbox" name="prog" class="one" value="2"> 
+1

проверка все работает только один раз, а кнопка отправки по-прежнему скрыта. –

+0

Использовать свойства вместо атрибутов для управления состоянием флажка – Musa

+0

см. Отредактированный код, отлично работает для меня –

1

Дайте флажку Выбрать весь идентификатор, скажем, selectall затем

$('#selectall').click(function(){ 
    if (this.checked){ 
     $('input[name="prog"]').prop('checked', true); 
     $submit.toggle(true); 
    } 
}); 

если вы хотите флажки невыбранными, если выбрать все в не выбранных

$('#selectall').click(function(){ 
    $('input[name="prog"]').prop('checked', this.checked); 
    $submit.toggle(this.checked); 
}); 
$cbs = $('input[name="prog"]').click(function() { 
    $submit.toggle($cbs.filter(':checked').length == 0); 
    if (!this.checked) $('#selectall').prop('checked', false); 
}); 
+0

Но вы также можете вручную щелкнуть по адресу 'name =" prog "', и тогда видимость '$ submit' будет неправильной. – Kasyx

+0

@ Kasyx как так? – Musa

+0

Итак, есть опция, чтобы флажки не были:: checked, и вы увидите '$ submit'. Это ошибка. – Kasyx

Смежные вопросы