Показать сообщение отдельно
  #11 (permalink)  
Старый 11.01.2014, 09:34
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

Сообщение от Poznakomlus Посмотреть сообщение
Что за спор а драки нет?
Я вам привел актуальное и лучшее решение на данный момент(Свое ). (Оформление можете сами поправить)
Если вы глянете большинство магазинов, то там +- прописывают функцию прямо в input тем самым засоряя html разметку.
Прикрепил Ваше решение с своему сайту и у меня перестали добавляться в заказ как положено. Не могу разобраться почему.

<table id="data">
	<tr>
		<td><img src="/images/venge.jpg" class="material"></td>
		<td><span>Венге</span></td>
		<td><div class="podbor"><input type="text" name="quantity" value="0" size="5"><span class="plus"></span><span class="minus"></span></div><input type="button" value="Заказать" class='buttonsubmit'></td>
	</tr>
	<tr>
		<td><img src="/images/orekh.jpg" class="material"></td>
		<td><span>Орех гварнери</span></td>
		<td><input type="text" name="quantity" value="0" size="5"><input type="button" value="Заказать" class='buttonsubmit'></td>
	</tr>
	<tr>
		<td><img src="/images/klen.jpg" class="material"></td>
		<td><span>Клен медисон</span></td>
		<td><input type="text" name="quantity" value="" size="5"><input type="button" value="Заказать" class='buttonsubmit'></td>
	</tr>
</table>
<div id="zayavka" class='b1c-name'></div>
<br>
<!-- <input type="checkbox" name="sborka"> <span style="font-size: 16px; font-weight: 400;">Сборка специалистом нашего интернет-магазина</span> -->
	</div>
	<span id='reqSborka' style='display:none;font-size:14px;font-weight:400;width:400px;'>
	<b><span style="color: blue">Количество столов под сборку?</span></b><br/>
	<input type="radio" name="sborka_radio" value='1'>
	<span> Вам нужна сборка стола(ов)? Укажите количество! </span><input type="text" name="stol_sborka_sum" size=3> Стоимость сборки одного стола - 1000 руб. <br>
	<input type="radio" name="sborka_radio" value='2'><span> Нет</span><br>
	</span>


var d = document;
window.onload = function () {
	d.getElementById("data").onclick = function(e) {
		var target = e && e.target || event.srcElement;
		if (target.type == "button" && target.value == "Заказать") {
			var value = target.previousSibling.value;
			var valueSupport = value||1;
			//alert(target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue);
			var ua = navigator.userAgent;
			var elm = ua.search(/MSIE/) > -1 ? target.parentNode.previousSibling.childNodes[0].nodeValue : target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue;
			var div = d.createElement("div");
			var span = d.createElement("span");
			span.setAttribute("style", "color: red");
			span.appendChild(d.createTextNode(value));
			div.setAttribute("style","width:500px");
			div.appendChild(d.createTextNode(elm+": "+valueSupport+" шт. на сумму: "+valueSupport*9000+" руб."));
			//div.appendChild(span);
			var input = d.createElement("input");
			input.setAttribute("type", "button");
			input.setAttribute("value", "Отменить");
			input.setAttribute("alt",valueSupport*9000);
			sumOfItem+=parseInt(valueSupport);
			input.onclick = function () {deletElementResultSum(this); d.getElementById("zayavka").removeChild(this.parentNode); };
			div.appendChild(input);
			d.getElementById("zayavka").appendChild(div);
		}
	}
}


<p><b><span style="color: blue">Услуги по доставке</span></b></p>
<p><input type="radio" name="dostavka" value="300"><span> г. Нижний Новгород (нижняя часть города) в течение 5 дней 300 руб.</span><br>
<p><input type="radio" name="dostavka" value="400"><span> г. Нижний Новгород (верхняя часть города) в течение 5 дней 400 руб.</span><br>
<p><input type="radio" name="dostavka" value="800"><span> г. Нижний Новгород, срочная (верхняя и нижняя часть города) на следующий день после оформления! 800 руб.</span><br>
<p><input type="radio" name="dostavka" value="1500"><span> Нижегородская область до 30 км. в течение 5 дней 1500 руб.</span><br>
<p><input type="radio" name="dostavka" value="0"><span> За пределами Н.Новгорода от 30 км. (на круг) 14 руб./км</span><br>
<p><input type="radio" name="dostavka" value="0"><span> Транспортной компанией: с тарифами доставки Вы можете  ознакомится:  <a href="http://www.pecom.ru/ru/calc/">ТК ПЭК</a>, <a href="http://www.dellin.ru/">ТК Деловые Линии</a>, <a href="http://www.ae5000.ru/">Автотрейдинг</a>. Вес упаковки стола с механизмом составляет 40 килограмм (2места). Вся мебель поставляется в разобранном виде в плоских упаковках.</span>
<p><b><span style="color: blue">Услуги по подъему на этаж</span></b></p>
<p><input type="radio" name="podyem" value='1'>
<span> Подъем стола-транформера в квартиру 100 руб./этаж на </span><input type="text" name="etazh" size=3> (укажите этаж)<br>
<p><input type="radio" name="podyem" value='2'><span> Подъем стола-транформера с лифтом 100 руб. 1 штука.</span><br>
<p>&nbsp;</p>
<div style="font-weight:bold;">
<span id='resultBlock' hidden>Итого:<span id='resultSum'></span> р.</span></div>
<input type="button" class="b1c" value="Оформить заявку стола-трансформера" style="margin:0 400px;">


var resultBlock_js = document.getElementById('resultBlock');
var resultSum_js = document.getElementById('resultSum');
var reqSborka_js = document.getElementById('reqSborka');
var sumOfItem = 0;
var lastVarDostavka = 0;
var lastVarPodyem = 0;
var stateVarPodyem = 0;
var lastVarSborka = 0;
var stateVarSborka = 0;
var nowResultSum = 0;

jQuery('.buttonsubmit').click(function(){
	resultBlock_js.hidden = false;
	reqSborka_js.style.display = 'block';
	var addPrice = this.parentNode.firstChild.value;
	if(addPrice=='')
	{
		addPrice = 1;
	}
	nowResultSum +=addPrice*9000;
	resultSum_js.innerHTML = nowResultSum;
});

jQuery('input[name=dostavka]').click(function(){
	nowResultSum -=lastVarDostavka;
	lastVarDostavka = parseInt(this.value);
	nowResultSum+=lastVarDostavka;
	resultSum_js.innerHTML = nowResultSum;
});

jQuery('input[name=podyem]').click(function(){
	nowResultSum -= lastVarPodyem;
	if(this.value=='1')
	{
		lastVarPodyem = document.getElementsByName('etazh')[0].value*100*sumOfItem;
		stateVarPodyem = 1;
	}
	else
	{
		stateVarPodyem = 0;
		lastVarPodyem = sumOfItem*100;
	}
	nowResultSum+=lastVarPodyem;
	resultSum_js.innerHTML = nowResultSum;
});

jQuery('input[name=etazh]').change(function(){
	if(stateVarPodyem == 1)
	{
		nowResultSum -= lastVarPodyem;
		lastVarPodyem = document.getElementsByName('etazh')[0].value*100*sumOfItem;
		nowResultSum+=lastVarPodyem;
		resultSum_js.innerHTML = nowResultSum;
	}
})

jQuery('input[name=sborka_radio]').click(function(){
	nowResultSum -= lastVarSborka;
	if(this.value=='1')
	{
		lastVarSborka = document.getElementsByName('stol_sborka_sum')[0].value*1000;
		stateVarSborka = 1;
	}
	else
	{
		stateVarSborka = 0;
		lastVarSborka = 0;
	}
	nowResultSum+=lastVarSborka;
	resultSum_js.innerHTML = nowResultSum;
	
});

jQuery('input[name=stol_sborka_sum]').change(function(){
	if(stateVarSborka == 1)
	{
		nowResultSum -= lastVarSborka;
		lastVarSborka = document.getElementsByName('stol_sborka_sum')[0].value*1000;
		nowResultSum+=lastVarSborka;
		resultSum_js.innerHTML = nowResultSum;
	}
})

function deletElementResultSum(myObj){
	nowResultSum -=myObj.alt;
	resultSum_js.innerHTML = nowResultSum;
	sumOfItem=sumOfItem - (parseInt(myObj.alt))/9;
	if(sumOfItem==0)
	{
		resultBlock_js.hidden = true;
		reqSborka_js.style.display = 'none';
	}
}
Ответить с цитированием