Показать сообщение отдельно
  #1 (permalink)  
Старый 24.11.2010, 04:39
Аватар для kacmem
Новичок на форуме
Отправить личное сообщение для kacmem Посмотреть профиль Найти все сообщения от kacmem
 
Регистрация: 24.11.2010
Сообщений: 5

Скрестить зависимые select и подсчет суммы
Здравствуйте форумчане! Вся надежда на вас. Вот уже не один день бьюсь над проблемой, а продвинулся совсем чуток. Я не силен в JS, поэтому прошу помощи у вас.

Пытаюсь скрестить 2 скрипта, один - это зависимые списки, второй - это калькулятор цен. Проблема в следующем. Списки работают, калькулятор работает (если в поле вводить количество), но цена берется из id поля input. Мне же необходимо чтоб цена бралась в зависимости от выбора в select артикула товара (допустим из id, хотя не уверен) и дополнительно складывалась с цифрой-количеством из поля input. Помогите разобраться. Уже мозги пухнут

Вот код:

Подгружаем JQuery для обработки зависимых списков:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>


Функция обработки списков и вызов функции:
// Функция Dependent JQuery для взаимосвязанных списков
(function($) {$.fn.dependent = function(opts) {opts.data = {};this.each(function() {$.each(opts.chain, function(index, selectID) {var ident = selectID.substr(1);var selectHTML = $(selectID).html();opts.data[ident] = {};$('<select>'+selectHTML+'</select>').find('optgroup').each(function() {var optGroup = $('<div>').append( $(this).eq(0).clone() ).html();var group = $(this).attr('label');opts.data[ident][group] = optGroup;});if(opts.chain[index+1]) {$(opts.chain[index]).bind('change', { 'nextID' : opts.chain[index+1] }, binding);} });$(this).bind('change', { 'nextID' : opts.chain[0] }, binding);function binding(event) {var next = event.data.nextID.substr(1);$('#'+next).html(opts.data[next][$(this).val()]);$('#'+next).trigger('change');}});}})(jQuery);
// Обращение к функции Dependent JQuery для взаимосвязанных списков
$(document).ready(function() {$('#category_1').dependent({chain : ['#subcategory_1', '#articul_1']});});


Функция калькулятора и вывода результата на лету
function CalcSum(obj){
	MF = document.MenuF;
	im = MF.elements.length;
	ps = parseInt(obj.value.toString());
	if (isNaN(ps)) {
		obj.value = "";
		}
	else {
		obj.value = ps;
		}
	sum = 0;
	for(i=0; i<im; i++) {
		m1 = MF.elements[i].value;
		m2 = MF.elements[i].id;
		if ((m1 > 0) && (m2 > 0)) {
			sum += m1*m2;
			}
		}
	MF.SumT.value = sum;
	TextSum.innerHTML = sum + " руб.";
	}


Вот сам зависимый список (создается динамически на PHP, но сейчас это не суть):
<form name=MenuF>
Категория
<select id="category_1" class="select">
<option value="Командные игры">Командные игры</option>
<option value="Механические игры">Механические игры</option>
</select>
<br>Подкатегория
<select id="subcategory_1" class="select">
<optgroup label="Командные игры">
<option value="Наименование подкатегории 1">Наименование подкатегории 1</option>
<option value="Наименование подкатегории 2">Наименование подкатегории 2</option>
</optgroup>
<optgroup label="Механические игры">
<option value="Наименование подкатегории 10">Наименование подкатегории 10</option>
</optgroup>
</select>
<br>Артикул
<select id="articul_1" class="select">
<optgroup label="Наименование подкатегории 1">
<option id="100" value="ART-п11">ART-п11</option>
<option id="101" value="ART-п12">ART-п12</option>
<option id="102" value="ART-п13">ART-п13</option>
<option id="103" value="ART-п14">ART-п14</option>
<option id="104" value="ART-п15">ART-п15</option>
<option id="105" value="ART-п16">ART-п16</option>
</optgroup>
<optgroup label="Наименование подкатегории 2">
<option id="106" value="ART-п21">ART-п21</option>
<option id="107" value="ART-п22">ART-п22</option>
<option id="108" value="ART-п23">ART-п23</option>
<option id="109" value="ART-п24">ART-п24</option>
</optgroup>
<optgroup label="Наименование подкатегории 10">
<option id="110" value="ART-п101">ART-п101</option>
<option id="111" value="ART-п102">ART-п102</option>
<option id="112" value="ART-п103">ART-п103</option>
<option id="113" value="ART-п104">ART-п104</option>
<option id="114" value="ART-п105">ART-п105</option>
</optgroup>
</select>
<br><br>
<input type=text size=4 maxlength=5 onChange="javascript:CalcSum(this);" onKeyUp="javascript:CalcSum(this);" id="200" name='' value='0'>
<br><br>
<input name=SumT type=hidden><span id=TextSum>0 руб.</span>
</form>

Последний раз редактировалось kacmem, 24.11.2010 в 04:47.
Ответить с цитированием