Javascript.RU

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

Массив из значений чекбоксов,максимальное значение и сумма результата с др. значе-ями
Добрый день. Прошу уважаемых гуру помочь разобраться с задачей, понимание которой есть а знаний для реализации крепко не хватает.
Суть задачи: имеем ряд чекбоксов, при их активции значения должны суммироваться по следующей логике:
- при выборе одного чекбокса с наибольшим значением должно выводиться только максимальное значение это чекбокса, при нажатии на остальные значение не меняется, то есть выводится в результат максимальное из всех
При этом есть чекбоксы значения которых должны суммироваться с максимальным значением из выбранных чекбоксов они отмечены жирным.

Например - выбрали смену наименования(10000) и смену руководителя(10000) то сумма должна выйти в 10000 руб.

Выбрали Смена паспортных данных учредителя(5000) и Выход учредителя или распределение его доли в ООО(8000) сумма должна выйти в 8000 руб.

Исключение составляет только а)продажи доли и Исправление ошибки(10000), если выбирают их то сумма суммируется. например выбрали смену наименования и продажи доли, то сумма 20000 руб.

Выбрали Исправление ошибки(10000) и Продажа доли в ООО (смена учредителя)(10000) то результат 20000, при этом если выбирать любые другие чекбоксы к этой сумме должен прибавляться результат максимального значения массива то есть если выбрать еще и Выход учредителя или распределение его доли в ООО(8000) то сумма 28000 и если еще к ним выбрать Смена паспортных данных учредителя(5000) то сумма все равно 28000.

Начал делать но не понимаю как это связать воедино чтобы работало.
Буду крайне признателен всем кто поможет.


<---------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------------------------->
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2017, 09:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Как вариант...

<!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>
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2017, 09:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от ksa
if (e.target.tagName!='INPUT') return;
на всякий случай
$('#price > ul').on('click', 'input',function(e){
    var sum=0;
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2017, 09:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от рони
на всякий случай
Ок.
Ответить с цитированием
  #5 (permalink)  
Старый 20.10.2017, 21:36
Новичок на форуме
Отправить личное сообщение для Евгенион Посмотреть профиль Найти все сообщения от Евгенион
 
Регистрация: 20.10.2017
Сообщений: 5

Простите пожалуйста, то что Вы написали не помогло решить задачу, я понимаю что она слишком сложная и все же прощу сообщество уделить немного своего драгоценного времемени.
Я не силен в синтаксисе не умею писать код просто составляю его как конструктор, хотелось бы получать из значений активированных чекбоксов массив, что бы в нем выбиралось максимальное значение и суммировалось с другими значениями других активированных чекбоксов. Куски кода как сформировать массив, вычислить максимальное значение и калькулятор я нашел, а как связать воедино, извините, ни в зуб ногой.
Ответить с цитированием
  #6 (permalink)  
Старый 23.10.2017, 07:44
Новичок на форуме
Отправить личное сообщение для Евгенион Посмотреть профиль Найти все сообщения от Евгенион
 
Регистрация: 20.10.2017
Сообщений: 5

Спасибо большое, все супер! Очень помогли
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать в переменную массив значений из INPUT тега kapustnik Общие вопросы Javascript 3 19.04.2013 10:46
Значение одного от значений другого EleGant Общие вопросы Javascript 10 02.02.2013 17:33
массив из значений дат от указанной tiho Общие вопросы Javascript 5 28.12.2012 10:04
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов rjabijj Общие вопросы Javascript 6 06.07.2012 21:34
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов. Drimmer Серверные языки и технологии 0 02.07.2012 18:22