Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2012, 10:50
Интересующийся
Отправить личное сообщение для ss18EXEL Посмотреть профиль Найти все сообщения от ss18EXEL
 
Регистрация: 04.12.2012
Сообщений: 13

Проверка chekbox масива и сложения их значений
Добрый день есть такой массив чекбоксов
<input type='chekbox' name='chec' id='chec' value='1000'>
    <input type='chekbox' name='chec' id='chec' value='100'>
    <input type='chekbox' name='chec' id='chec' value='10'>
    <input type='chekbox' name='chec' id='chec' value='1'>


мне надо их проверить нажали их или нет и если из этих чекбоксов которые нажали, надо взять все нажатые и сложить их значения. например если нажали 1 и 4 то на отправку из формы пойдёт 1001. если нажали все 4 то на отправку идёт 1111 Подскажите как это можно осуществить?
Ответить с цитированием
  #2 (permalink)  
Старый 04.12.2012, 11:05
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Во-первых, дать им разные id. Например, checkbox1, checkbox2 и т.д.
Дальше в цикле проверять document.getElementById('checkbox' + i).checked и формировать итоговую сумму.
Ответить с цитированием
  #3 (permalink)  
Старый 04.12.2012, 11:11
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

решение на jquery
function get_checked_sum(){
     checked = $("input:checked");
     sum = 0;
     for(i=0;i<checked.lenght;i++){
        sum += parseInt(checked.eq(i).val(),10);
     }
     return sum
}

Последний раз редактировалось Tek, 04.12.2012 в 11:16.
Ответить с цитированием
  #4 (permalink)  
Старый 04.12.2012, 11:22
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<div id="checks">
<input type="checkbox" value="1000">
<input type="checkbox" value="100">
<input type="checkbox" value="10">
<input type="checkbox" value="1">
</div>

<script>
document.getElementById('checks').onclick = function()
{
    var chec = document.getElementById('checks').getElementsByTagName('input');
    var sum = 0;
    for(i=0;i<chec.length;i++)
    {
        if(chec[i].checked)
        {
            sum += (chec[i].value*1);
        }
    }
    alert(sum);
}
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 04.12.2012, 11:25
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

<input type='checkbox' name='chec' id='chec' value='1000'>
    <input type='checkbox' name='chec'  value='100'>
    <input type='checkbox' name='chec' value='10'>
    <input type='checkbox' name='chec' value='1'>
    
    <input type = "button" id = "show" value = "show me">


    <script>
      function getCheckboxesValues( name ) {
        var x, result = "", checkboxes = document.getElementsByName( name );
        
        for ( x = 0; x < checkboxes.length; x++ ) {
          result += checkboxes[ x ].checked ? checkboxes[ x ].value : ""
        }
        
        return result
      }
      
      document.getElementById( "show" ).onclick = function() {
        alert( getCheckboxesValues( "chec" ) )
      }
    </script>


checkbox, а не chekbox
И одинаковые id делать не стоит.
Ответить с цитированием
  #6 (permalink)  
Старый 04.12.2012, 13:32
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

GuardCat, es5, не? ) И stringToNumber.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #7 (permalink)  
Старый 04.12.2012, 13:58
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

nerv_, ТС хочет именно стринги складывать, как я понял. А что ES5? использовать querySelectorAll?
Ответить с цитированием
  #8 (permalink)  
Старый 04.12.2012, 16:12
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

GuardCat, http://es5.javascript.ru/x15.4.html#x15.4.4.21

<input type='checkbox' name='chec' id='chec' value='1000'>
<input type='checkbox' name='chec'  value='100'>
<input type='checkbox' name='chec' value='10'>
<input type='checkbox' name='chec' value='1'>

<input type = "button" id = "show" value = "show me">


<script>
    function getCheckboxesValues( name ) {
        return Array.prototype.reduce.call( document.getElementsByName( name ), function( sum, input ) {
            return sum += input.checked ? input.value : '';
        }, '' );
    }
  
  document.getElementById( "show" ).onclick = function() {
    alert( getCheckboxesValues( "chec" ) )
  }
</script>
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #9 (permalink)  
Старый 04.12.2012, 19:56
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

nerv_, даже не подумал об этом. Спасибо.
Ответить с цитированием
  #10 (permalink)  
Старый 18.12.2012, 16:51
Интересующийся
Отправить личное сообщение для ss18EXEL Посмотреть профиль Найти все сообщения от ss18EXEL
 
Регистрация: 04.12.2012
Сообщений: 13

function valuesSum()
{
        var sum = 0;
       
        var checks = document.getElementsByName('chec[]');     
       
        for(var i = 0; i < checks.length; i++)
        {
           if(checks[i].checked)
           sum += parseInt(checks[i].value, 10);
        }
       
        return sum;
}
 
window.onload = function()
{
        document.getElementById('btn').onclick = function()
        {
                var sum = valuesSum();
               
                alert(sum);
        }
}

Это я воплатил в жизнь но проблема стала в другом когда выбираются данные из базы если допустим туда занесли данные два последних чекбокса и получили результат 11 а как поправить функцию в джаве чтобы если первые два не выбрал передавалось значение текстом 0011 ((
если выбрали нижних 3 то результат был 0111
надо чтобы приходило четыри цифра
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор рандом значений с масива Beriagts jQuery 3 13.11.2012 17:24
Проверка корректности введенных значений Athlete Общие вопросы Javascript 1 25.06.2009 09:56