Посчитать количество отмеченых чебоксов

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
Не получается вывести количество массового отмеченных чебоксов вот пример new-muzon.ru/zilon/index.php когда по одному отмечаю то число выводится. А когда нажимаю на один и веду мышкой по остальным(как на яндекс почте, массово выделяю письма чтоб удалить) то отмеченные не выводятся, не знаю почему. Вот код который считает их... подскажите пожалуйста как исправить :thenks:

Код:
<script type="text/javascript">

    var count = 0;

    $(function() {
        displayCount();
        $('input[type=checkbox]').click(function() {
            if (this.checked) {
                count++;
            } else {
                count--;
            }
            displayCount();
        });
    });

    function displayCount() {
        $('#count').text(count);
    }

</script>
 
При том действии, которым ты массово выделяешь чекбоксы, кстати спасибо не знал о таком свойстве чекбоксов, что происходит?
mousedown -> mousemove -> mouseup
Значит тебе надо еще один обработчик на mouseup повесить, в котором будет функция обходящая все чекбоксы и проверяющая checked.

Списки событий:
Для просмотра ссылки Войди или Зарегистрируйся
 
не уверен насчет производительности (лучше кешировать счётчик, чем по dom'у гулять каждый пук), но суть примерно в этом:
HTML:
$( 'form input[type="checkbox"]' ).mouseout( function(){

    var f = $(this).closest( 'form' )[0];

    console.log( $('input:checked', f).length );

});
 
Код:
<script type="text/javascript">

    var count = 0;

    $(function() {
        displayCount();
        $('input[type=checkbox]').mouseleave(function() {
            count = $("input[type=checkbox]:checked").size();
            displayCount();
        });
       
        function displayCount() {
            $('#count').text(count);
        }
    });

</script>
 
Код:
<script type="text/javascript">

    var count = 0;

    $(function() {
        displayCount();
        $('input[type=checkbox]').mouseleave(function() {
            count = $("input[type=checkbox]:checked").size();
            displayCount();
        });
     
        function displayCount() {
            $('#count').text(count);
        }
    });

</script>

спасибо, ещё хотел узнать, если у меня два списка, домены и файлы, можно как не будь отметить только чебоксы с доменами? Вот пример там все чебоксы считаются - new-muzon.ru/test/index.html
 
Вы можете получить все проверяются коробки и метод использование size(), чтобы получить номера проверяется.
PHP:
var checked_count = $('input[type="checkbox"]:checked').size();
 
спасибо, ещё хотел узнать, если у меня два списка, домены и файлы, можно как не будь отметить только чебоксы с доменами? Вот пример там все чебоксы считаются - new-muzon.ru/test/index.html
А в чем проблема? Чекбоксам с доменами присвой класс domen, а с файлами - file. И по классу отмечай уже.
 
Последнее редактирование:
А в чем проблема? Чекбоксам с доменами присвой класс domen, а с файлами - file. И по классу отмечай уже.

проблема в том что я в js ничего не понимаю, в php более менее шарю а в js дуб дубом)
а как по классам отмечать?
 
проблема в том что я в js ничего не понимаю, в php более менее шарю а в js дуб дубом)
а как по классам отмечать?
Добавить чекбоксам с доменами класс
Код:
<input name='doman[]' type='checkbox' class="domainCheckbox" value='doman-1.ru'>
И в коде указать что нужно выбирать именно такие чекбоксы:
Код:
...
$('input.domainCheckbox[type=checkbox]').mouseleave(function() {
...
Код:
...
$("input.domainCheckbox[type=checkbox]:checked")
...
 
Добавить чекбоксам с доменами класс
Код:
<input name='doman[]' type='checkbox' class="domainCheckbox" value='doman-1.ru'>
И в коде указать что нужно выбирать именно такие чекбоксы:
Код:
...
$('input.domainCheckbox[type=checkbox]').mouseleave(function() {
...
Код:
...
$("input.domainCheckbox[type=checkbox]:checked")
...

там код немного поменялся, подскажите пжалуста что тут менять надо в скриптах
классы добавил к чебоксам

в index.html

Код:
<script type="text/javascript">
jQuery(document).ready(function($){
$(':checkbox').toggler(true);
});
</script>

domains.js

Код:
$(document).ready(function(){
[code=javascript] var checkbox = $(':checkbox'),count,checked,started = false;
$('body').mouseup( function(){
started = false;
});
checkbox.each(function(indx, element){
$(this).click( function(){
checked = $(this).prop("checked");
$(this).prop({"checked":!checked});
count = $( ':checked' ).size()
$('#count').text(count)
});
$(this).mousedown( function(){
checked = $(this).prop("checked");
$(this).prop({"checked":!checked});
count = $( ':checked' ).size()
$('#count').text(count)
started = true;
});
$(this).mouseenter( function(){
checked = $(this).prop("checked");
started && $(this).prop({"checked":!checked});
count = $( ':checked' ).size()
$('#count').text(count)
});
});

});
 
Назад
Сверху