Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 77

Сосчитать значения чекбокса

06.12.2014, 11:27. Показов 4194. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть список чекбоксов:

HTML5
1
2
<input  type="checkbox" value="4545" name="vote" test="0.2">
<input  type="checkbox" value="1047" name="vote" test="1.2">
Подскажите пожалуйста как сделать вывод суммы атрибута test у выбранных чекбоксов?
т.е если выбрать эти два чекбокса то вывод должен быть 1.4
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2014, 11:27
Ответы с готовыми решениями:

Передача значения чекбокса
Доброго времени суток! Необходимо производить обработку чекбокса при нажатии. Есть чекбокс &lt;div...

Сохранение значения чекбокса после перезагрузки страницы
Доброго времени суток! Есть чекбокс, при отмеченном чекбоксе фон у чекбокса изменяется (скрин &quot;Отмеченный&quot;,...

Считать состояние чекбокса
Здравствуйте. Подскажите как считать состояние чекбокса и радио кнопок, что бы с зависимости от состояния выводились разные сообщения....

7
 Аватар для Web-ulyanov
55 / 54 / 24
Регистрация: 07.10.2013
Сообщений: 200
06.12.2014, 17:38
HTML5
1
2
3
<input  type="checkbox" value="4545" name="vote" data-test="0.2">
<input  type="checkbox" value="1047" name="vote" data-test="1.2">
<a href="#" class="get-sum">Посчитать</a>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(function(){
    $('.get-sum').on('click', function(event) {
        event.preventDefault();
                    
        var sum = 0;
        $('input[type="checkbox"]').each(function() {
                        
            if($(this).prop('checked')) {
               var val = parseFloat($(this).attr('data-test'));
               sum += val;
           }
        })
                    
        alert('Общая сумма: ' + sum);
    });
});
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
07.12.2014, 05:32
Web-ulyanov, У вас или одного действия не хватает, или одно лишнее. Если вы преобразовываете значение (parseFloat), то следующим шагом логично проверить его на NaN. Если ТС уверен в своих данных, то эти проверки можно пропустить.
Шерстить все поля checkbox - смысла нет, т.к. их можно отфильтровать на начальном этапе с помощью селектора ":checked". И, как я понимаю, задача стояла в подсчете при выборе checkbox, а не по нажатию на какую-то кнопку. Последнее, конечно же, не принципиально важно, но всё же. С учетом поправок, можно сделать так:
JavaScript
1
2
3
4
5
6
7
8
9
10
$(function () {
    var output = $('output');
    $(':checkbox').on('change', function () {
        var sum = 0;
        $(':checkbox:checked').each(function (i, el) {
            sum += +$(el).attr('data-test');
        });
        output.text('Общая сумма: ' + sum);
    });
});
, если дополнительная проверка данных не требуется или, если проверять значения нужно, то таким образом:
JavaScript
1
2
3
4
5
6
7
8
9
10
$(function () {
    var output = $('output');
    $(':checkbox').on('change', function () {
        var sum = 0;
        $(':checkbox:checked').each(function (i, el) {
            sum += (cVal = parseFloat($(el).attr('data-test'))) && !isNaN(cVal) ? cVal : 0;
        });
        output.text('Общая сумма: ' + sum);
    });
});
1
 Аватар для Web-ulyanov
55 / 54 / 24
Регистрация: 07.10.2013
Сообщений: 200
07.12.2014, 10:13
Lazy_Den,
Без parseFloat мы будем складывать строки, а не числа.
А вот isNaN здесь действительно не нужен, разве что в качестве страховки, если ошибемся в написании сами.
По циклу согласен, лучше сразу по выбранным запускать.
В какой момент производить подсчет ничего не было сказано, так же логично предположить, что сначала мы собираем все данные, а только потом считаем, а не каждый раз при нажатии на чек, показываем сообщение. В любом случае достаточно просто поменять событие, по которому запускается функция.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
07.12.2014, 11:27
Цитата Сообщение от Web-ulyanov Посмотреть сообщение
Без parseFloat мы будем складывать строки, а не числа.
Вы в моём первом примере заметили, что складываются строки? Не думаю. А вот абсолютно лишняя функция отсутствует. А это совсем не мелочь - на мизерных проектах не особо ощутимо, а на больших быстро поймёшь, что значит "избыточность кода". Приучаемся с детства ))
Цитата Сообщение от Web-ulyanov Посмотреть сообщение
А вот isNaN здесь действительно не нужен
На такие заявления - даже сказать нечего.
0
 Аватар для Neofromatrix
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 3
29.03.2017, 17:34
Lazy_Den
Отличное решение, как раз пригодилось =)
А можно ли добавить дополнительное условие, чтобы если выделены скажем 3 чекбокса (а всего их энное кол-во) то общее число суммировалось с вычетом 10%? Т.е скидка своеобразная)
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
31.03.2017, 21:45
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
$(function () {
    var output = $('output');
    $(':checkbox').on('change', function () {
        var sum = 0;
        $(':checkbox:checked').each(function (i, el) {
            sum += (cVal = parseFloat($(el).attr('data-test'))) && !isNaN(cVal) ? cVal : 0;
        });
        if ($(':checkbox:checked').length>2)
            sum *= 0.9;
output.text('Общая сумма: ' + sum);
    });
});
1
 Аватар для Neofromatrix
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 3
01.04.2017, 02:01
alpex
Благодарствую!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2017, 02:01
Помогаю со студенческими работами здесь

Передать в обработчик name чекбокса
Всем доброго времени суток, как мне в обработчике вывести имя checkbox'a Делаю ajax запрос для формы целиком: ...

вызвать событие у чекбокса
Доброго времени суток! Наверняка уже задавался такой вопрос, но я не знаю как найти :) В общем имеем &lt;input...

Выделение чекбокса по клике на строке
Всем привет! Есть таблица: &lt;table&gt; &lt;tr class=&quot;tr-form&quot;&gt; &lt;td&gt;111&lt;/td&gt; &lt;td&gt;&lt;input...

Как узнать значениє чекбокса?
Вот код пачему он не работаєт &lt;input id=&quot;CheckBox1&quot; type=&quot;checkbox&quot; name=&quot;chek1&quot; value=&quot;1234&quot; /&gt; $(document).ready(function(){ ...

Js задать value в зависимости от состояния чекбокса
Здавствуйте. Есть такой кусок кода: &lt;input type=&quot;checkbox&quot; name=&quot;lit&quot;&gt; &lt;input type=&quot;hidden&quot; name=&quot;litvalue&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru