Массив из значений чекбоксов,максимальное значение и сумма результата с др. значе-ями
Добрый день. Прошу уважаемых гуру помочь разобраться с задачей, понимание которой есть а знаний для реализации крепко не хватает.
Суть задачи: имеем ряд чекбоксов, при их активции значения должны суммироваться по следующей логике: - при выборе одного чекбокса с наибольшим значением должно выводиться только максимальное значение это чекбокса, при нажатии на остальные значение не меняется, то есть выводится в результат максимальное из всех При этом есть чекбоксы значения которых должны суммироваться с максимальным значением из выбранных чекбоксов они отмечены жирным. Например - выбрали смену наименования(10000) и смену руководителя(10000) то сумма должна выйти в 10000 руб. Выбрали Смена паспортных данных учредителя(5000) и Выход учредителя или распределение его доли в ООО(8000) сумма должна выйти в 8000 руб. Исключение составляет только а)продажи доли и Исправление ошибки(10000), если выбирают их то сумма суммируется. например выбрали смену наименования и продажи доли, то сумма 20000 руб. Выбрали Исправление ошибки(10000) и Продажа доли в ООО (смена учредителя)(10000) то результат 20000, при этом если выбирать любые другие чекбоксы к этой сумме должен прибавляться результат максимального значения массива то есть если выбрать еще и Выход учредителя или распределение его доли в ООО(8000) то сумма 28000 и если еще к ним выбрать Смена паспортных данных учредителя(5000) то сумма все равно 28000. Начал делать но не понимаю как это связать воедино чтобы работало. Буду крайне признателен всем кто поможет.:help: <---------html_______> <div id="price"> <ul> <li><input type="checkbox" name="regcalc" value="10000" />Смена наименования</li> <li><input type="checkbox" name="regcalc" value="10000" />Смена юридического адреса</li> <li><input type="checkbox" name="regcalc" value="10000" />Смена видов деятельности</li> <li><input type="checkbox" name="regcalc" value="10000" />Увеличение уставного капитала или вход участника путем увеличения уставного капитала в ООО</li> <li><input type="checkbox" name="regcalc" value="10000" />Другие изменения в устав</li> <li><input type="checkbox" name="regcalc" value="10000" />Изменения в ЕГРЮЛ ООО, АО</li> <li><input type="checkbox" name="regcalc" value="1000" />Смена юридического адреса</li> <li><input type="checkbox" name="regcalc" value="5000" />Смена руководителя или его паспортных данных</li> <li><input type="checkbox" name="regcalc" value="8000" />Выход учредителя или распределение его доли в ООО</li> <li><input type="checkbox" name="regcalc" value="10000" />Продажа доли в ООО (смена учредителя)</li> <li><input type="checkbox" name="regcalc" value="5000" />Смена паспортных данных учредителя</li> <li><input type="checkbox" name="regcalc" value="5000" />Смена видов деятельности</li> <li><input type="checkbox" name="regcalc" value="10000" />Исправление ошибки</li> <li><input type="checkbox" name="regcalc" value="5000" />Внесение записи о реестродержателе АО</li> </ul> <div class="result" id="sum">0</div> </div> <---------html_______> <------------------------------javascript-------------------------> Array.prototype.map.call(document.querySelectorAll ('checkbox'),function(element,index,arr){ element.addEventListener('change',function(){ var _value = this.value; Array.prototype.map.call(arr,function(e,i,a){ a[i].value = _value; }) },false) }) Array.prototype.max = function(){ var max = parseInt(this[this.length-1]), el; for(var i=this.length-2; i>=0; i--){ el = parseInt(this[i]); if(el>max){ max = el; } } return max; }; <script language="JavaScript" type="text/javascript"> $(function(){ $("#price").click(function(){ var sum=0; // начальное значение можно указать любое $('#price :checked').each(function(){ sum+=parseInt($(this).val()); }); $('#sum').text(sum); }); }); </script> <------------------------------javascript-------------------------> |
Как вариант...
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='https://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ $('#price > ul').click(function(e){ if (e.target.tagName!='INPUT') return; var sum=0; var max=0; $('#price :checkbox:checked:not(.summ)').each(function(){ var val=+this.value; if (val>max) max=val; }); $('#price .summ:checked').each(function(){ sum+=+this.value; }); $('#price > .result').text(sum+max); }); }); </script> </head> <body> <div id="price"> <ul> <li><input type="checkbox" name="regcalc" value="10000" />Смена наименования</li> <li><input type="checkbox" name="regcalc" value="10000" />Смена юридического адреса</li> <li><input type="checkbox" name="regcalc" value="10000" />Смена видов деятельности</li> <li><input type="checkbox" name="regcalc" value="10000" />Увеличение уставного капитала или вход участника путем увеличения уставного капитала в ООО</li> <li><input type="checkbox" name="regcalc" value="10000" />Другие изменения в устав</li> <li><input type="checkbox" name="regcalc" value="10000" />Изменения в ЕГРЮЛ ООО, АО</li> <li><input type="checkbox" name="regcalc" value="1000" />Смена юридического адреса</li> <li><input type="checkbox" name="regcalc" value="5000" />Смена руководителя или его паспортных данных</li> <li><input type="checkbox" name="regcalc" value="8000" />Выход учредителя или распределение его доли в ООО</li> <li><input type="checkbox" name="regcalc" value="10000" class='summ' />Продажа доли в ООО (смена учредителя)</li> <li><input type="checkbox" name="regcalc" value="5000" />Смена паспортных данных учредителя</li> <li><input type="checkbox" name="regcalc" value="5000" />Смена видов деятельности</li> <li><input type="checkbox" name="regcalc" value="10000" class='summ' />Исправление ошибки</li> <li><input type="checkbox" name="regcalc" value="5000" />Внесение записи о реестродержателе АО</li> </ul> <div class="result" id="sum">0</div> </div> </body> </html> |
Цитата:
$('#price > ul').on('click', 'input',function(e){ var sum=0; |
Цитата:
|
Простите пожалуйста, то что Вы написали не помогло решить задачу, я понимаю что она слишком сложная и все же прощу сообщество уделить немного своего драгоценного времемени.
Я не силен в синтаксисе не умею писать код просто составляю его как конструктор, хотелось бы получать из значений активированных чекбоксов массив, что бы в нем выбиралось максимальное значение и суммировалось с другими значениями других активированных чекбоксов. Куски кода как сформировать массив, вычислить максимальное значение и калькулятор я нашел, а как связать воедино, извините, ни в зуб ногой. |
Спасибо большое, все супер! Очень помогли
|
Часовой пояс GMT +3, время: 04:09. |