Подсчет значений в полях вебформы

04.12.2012

Добрый день. Есть задачка такая, В вебформе которая в свою очередь получает несколько значений из ноды посчитать поля. Просто умножить одно на другое, ну и по возможности применить условия сравнения для применения и вычисления процента дисконта. Понимаю что на пхп можно сделать, но как и где прописать? пробовал в шаблоне вебформы но не могу достучаться до значений полей и главное в поля вывести результат. Буду рад конструктивным ответам. С пхп только начинаю знакомиться но очень хочется. Уберкарт и коммерц не предлагать, не тот случай.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (67)

Profile picture for user 1541
drudreamer
26.02.2013

Как можно получить итоговую сумму? тоесть есть поля в которых вычисляются значения

$('#webform-component-horseprice--horsesum input'),  $('#webform-component-shootprice--ssum input')б $('#webform-component-fishprice--fsum input')

как суммировать все эти поля автоматический в итоговом поле?

$('#webform-component-itog input')
Profile picture for user pantey
pantey
26.02.2013

примерно вот так

var $a = $('#webform-component-horseprice--horsesum input').val();
var $b = $('#webform-component-shootprice--ssum input').val();
var $c = $('#webform-component-fishprice--fsum input').val();
$d = $a + $b + $c;
$('#webform-component-itog input').attr('value', $d);
Profile picture for user 1541
bgusev
27.02.2013

Так делал, но в итоговом поле показывает статическое значение, суммирование при это не было, было 2500+1500=25001500 :(

Profile picture for user pantey
pantey
27.02.2013

вы вывод в кавычки случайно не брали? попробуйте перевести из строки в число выводимое значение. и полный код, как вы делаете!

Profile picture for user 1541
bgusev
27.02.2013

делал как вы написали. Вот код вычитаемых полей

//Стрельба

	$('#edit-submitted-shootprice-kolshoot').change(function(){
       $ssumma = $('#webform-component-shootprice--kolshoot input').val() * 150;
        $('#webform-component-shootprice--ssum input').attr('value', $ssumma);
    });
//Верховая езда
$('#edit-submitted-horseprice-timehorse'|'#edit-submitted-horseprice-horskol').change(function(){
       $horsesumma = $('#webform-component-horseprice--timehorse input').val()/30  * 2500 * $('#webform-component-horseprice--horskol input').val();
	 $('#webform-component-horseprice--horsesum input').attr('value', $horsesumma);
    });
//Итог
	var $a = $('#webform-component-horseprice--horsesum input').val();
var $b = $('#webform-component-shootprice--ssum input').val();
$d = $a + $b;
$('webform-component-itog input').attr('value', $d);

делал и так

$d = $ssumma+$horsesumma;
Profile picture for user pantey
pantey
27.02.2013

В "ИТОГ", при выборе селектора нет знака индентификатора. Все выбираемые числовые атрибуты селекторов занесите в отдельные переменные и потом производите необходимые действия.

Profile picture for user 1541
bgusev
27.02.2013

я сделал как вы писали

//Стрельба

	$('#edit-submitted-shootprice-kolshoot').change(function(){
       $ssumma = $('#webform-component-shootprice--kolshoot input').val() * 150;
        $('#webform-component-shootprice--ssum input').attr('value', $ssumma);
    });
	

	
	
//Верховая езда
$('#edit-submitted-horseprice-timehorse'|'#edit-submitted-horseprice-horskol').change(function(){
       $horsesumma = $('#webform-component-horseprice--timehorse input').val()/30  * 2500 * $('#webform-component-horseprice--horskol input').val();
	 $('#webform-component-horseprice--horsesum input').attr('value', $horsesumma);
    });
	
	//Итог
	var $a = $('#webform-component-horseprice--horsesum input').val();
var $b = $('#webform-component-shootprice--ssum input').val();
$d = $b+$a;
$('#webform-component-itog input').attr('value', $d);

все равно изначально в поле итог ставит значение 15002500:(

Profile picture for user pantey
pantey
27.02.2013

давайте ссылку на сайт, где посмотреть можно. Либо исходные код страницы в архиве, скиньте мне на почту. Я посмотрю.

Profile picture for user 1541
alex
06.09.2013

Как правильно записать этот код в jQuery?

$('#summ').keyup(
			function (){
			var first = +document.getElementById('price').value;
      			var second = +document.getElementById('markup').value;
      			var third = +document.getElementById('price_percent').value;
      document.getElementById('summ_itog').value = (first + ((second * first)/100)) - (third * first)/100 || 'Введите цену';});
Profile picture for user pantey
pantey
06.09.2013

примерно так

$('#summ').keyup(function(){
	var first = $('#price').val();
	var second = $('#markup').val();
	var third = $('#price_percent').val();
	$('#summ_itog').val() = (first + ((second * first)/100)) - (third * first)/100) || 'Введите цену';
});
Profile picture for user 1541
alex
06.09.2013

так почему то не работает((
надо еще чтобы обрабатывало по .keyup и .change

Profile picture for user pantey
pantey
06.09.2013

проще описать задачу, что вам необходимо получить, чем использовать сенсорные способности, что и чем должно быть обработано. Описывайте задачу :)

Profile picture for user 1541
alex
06.09.2013

Есть Блок с полями - #summ
Есть три поля ввода - два input - #price, #markup и один select - #price-percent
Есть поле вывода "Итог" - #summ_itog
нужно динамически подсчитывать итог, при изменении любого из трех полей ввода

Profile picture for user pantey
pantey
06.09.2013

пишите функцию которая будет забирать значения их 3 полей, производить математические действия и выводить результат. И далее запускаете по change для каждого из полей, примерно так

function test(){
	var first = $('#price').val();
	var second = $('#markup').val();
	var third = $('#price_percent').val();
	var itog = first + second + third; //ваши математические действия
	$('#summ_itog').val(itog);
}

$('#price').change(function(){test()});
$('#markup').change(function(){test()});
$('#price_percent').change(function(){test()});

написал на коленке, наверно не красиво, но должно работать.

Profile picture for user 1541
alex
06.09.2013
var itog = (first + ((second * first)/100)) - (third * first)/100;

странно считает, не учитывает + и -
например ставлю 1600 цена + 10% = 1600160 вместо 1760

Profile picture for user pantey
pantey
06.09.2013

переведите все забираемые значения к единому числовому типу, через parseInt();

Profile picture for user 1541
alex
06.09.2013

Спасибо!!!! Работает))