Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.10.2012, 00:04
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 23.10.2012
Сообщений: 17

Создание калькулятора.
Здравствуйте.
Написала шаблон калькулятора и формулу, по которой будет итог рассчитываться.
Шаблон:
Код:
<script type="text/javascript">
function change() {
   document.getElementById('ch1').innerHTML='0';
}
function newdoc() {
   location.assign('http://test.ruslinck.pro/ru/order');
}
</script>

<div>

<table class="formcalc">
<tbody>
<tr>
                     
<!-- Цвета -->
<td class="calc-top">
<h3>Цвета в наличии:</h3></td>
  <td class="calc-top">Серебристый<br /><img src="http://test.ruslinck.pro/images/calculator/gray.png" alt="серебристый" /><br /></td>
  <td class="calc-top">Чёрный<br /><img src="http://test.ruslinck.pro/images/calculator/black.png" alt="чёрный" /><br /></td>
  <td class="calc-top">Зелёный<br /><img src="http://test.ruslinck.pro/images/calculator/green.png" alt="зелёный" /><br /></td>
</tr></tbody>
                        
<!-- Привратник 01-С -->                      

<tbody>
<tr>
  <td>
  <h3>Привратник 01-С</h3>
<table class="formcalc"><tr class="validate['required']"><td>
Количество:</td>
<td>
<p><input type="text" size="5" value="0" name="kolvo" onfocus="this.value=(this.value=='0')? '' : this.value;" onblur="this.value=(this.value=='')? '0' : this.value;"  onclick="this.value='';" /> шт.</p>
</td></tr></table>
Добавить
</td>

<!-- Выбор 01-С накладной -->
<td colspan="2" class="radio">
          <p>
              <input type="radio" class="validate['required']" name="01C" value="1" id="gray01A" onclick="fun1()" />
                <label for="gray01A">Серебристый</label><br />
              <input type="radio" class="validate['required']" name="01C" value="1" id="black01A" />
                <label for="black01A">Чёрный</label><br />
              <input type="radio" class="validate['required']" name="01C" value="1" id="green01A" />
                <label for="green01A">Зелёный</label>
           </p>
</td>
     
<!-- Выбор 01-С бокс -->
<td class="calc-top">
<h3>Бокс для накладного исполнения</h3>
<img src="http://test.ruslinck.pro/images/calculator/box.png" alt="Бокс" />
<p><input type="radio" name="box1" value="1" id="box1" /></p><br />

<!-- Кол-во 01-С бокс -->                          
<table class="formcalc"><tr class="validate['required']"><td>
Количество:</td>
<td>
<p><input type="text" size="5" value="0" name="kolvo3" onfocus="this.value=(this.value=='0')? '' : this.value;" onblur="this.value=(this.value=='')? '0' : this.value;"  onclick="this.value='';" /> шт.</p>
</td></tr></table>
 
</td></tr>
</tbody>

<!-- Привратник 02-А --> 
<tbody>
<tr><td>
<h3>Привратник 02-А</h3>
<table class="formcalc"><tr><td>
Количество:</td>
<td>
<p><input type="text" size="5" value="0" name="kolvo2" onfocus="this.value=(this.value=='0')? '' : this.value;" onblur="this.value=(this.value=='')? '0' : this.value;"  onclick="this.value='';" /> шт.</p>
</td></tr></table>
Добавить
</td>

<!-- Выбор 02-А накладной -->
<td colspan="2" class="radio">
    <p>
        <input type="radio" name="02A" value="1" id="gray02C" />
          <label for="gray02C">Серебристый</label><br />
         <input type="radio" name="02A" value="1" id="black02C" />
           <label for="black02C">Чёрный</label><br />
         <input type="radio" name="02A" value="1" id="green02C" />
           <label for="green02C">Зелёный</label>
    </p>
 </td>
                         
<!-- Привратник 02-А бокс -->                         
<td class="calc-top">
<h3>Бокс для врезного исполнения</h3>
<img src="http://test.ruslinck.pro/images/calculator/box.png" alt="Бокс" />
<p><input type="radio" name="box2" value="1" id="Врезное_02" /></p><br />

<!-- Кол-во 02-А бокс -->                          
<table class="formcalc"><tr><td>
Количество:</td>
<td>
<p><input type="text" size="5" value="0" name="kolvo4" onfocus="this.value=(this.value=='0')? '' : this.value;" onblur="this.value=(this.value=='')? '0' : this.value;"  onclick="this.value='';" /> шт</p>
</td></tr></table>
</td></tr>
</tbody>


<!-- Рассчитанная стоимость -->
<tbody>
<tr>
<td colspan="4"  class="calc-form">Рассчитанная стоимость составляет <div id="ch1"><strong>{rezultat}</strong></div> руб.<p><br /></p>
<p><input class="button" type="reset" name="reset" value="Отменить" onclick="change(),newdoc()" /></p>

<p><br /></p><br />
<p>Выслать заявку на e-mail: 
<input type="text" value="Введите ваш e-mail" name="mailto" id="mailto" class="validate['email']" onfocus="this.value=(this.value=='0')? '' : this.value;" onblur="this.value=(this.value=='')? '0' : this.value;"  onclick="this.value='';" /></p>
<p><br /></p>
<form name="files" id="files" method="post" action="mail.php" enctype="multipart/form-data">
<p> 
<input type="file" name="files" value="Выберите файл" /></p>
</form>
<p><br /></p>
<p><input type="submit" value="Отправить заявку" /></p>

                         </td>
                      </tr>
                       
                       
</tbody>
</table>
 
</div>
Формула:
Код:
rezultat=({01C}*{kolvo})*100+({box1}*{kolvo3})*200+({02A}*{kolvo2})*300+({box2}*{kolvo4})*400
При заказе все позиции отображаются, а нужно только выбранные. Как это реализовать? Помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 24.10.2012, 00:07
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 23.10.2012
Сообщений: 17

Еще кнопка отправления заказа не работает на ИЕ8, хотя валидацию проходила, ошибок не обнаружено. В чем причина?
Ответить с цитированием
  #3 (permalink)  
Старый 24.10.2012, 00:33
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

ИЕ может отказать из-за кодировки
Ответить с цитированием
  #4 (permalink)  
Старый 24.10.2012, 09:12
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 23.10.2012
Сообщений: 17

А какую нужно кодировку? На всем сайте utf-8.
Ответить с цитированием
  #5 (permalink)  
Старый 24.10.2012, 09:29
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 23.10.2012
Сообщений: 17

Сейчас увидела, что в исходном коде страницы отображается:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Кавычки не расставлены. Сайт на джумле, из админки не могу поправить шаблон.
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2012, 09:51
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

27NataRUS,
кодировка на сервере, объявленная в файле и самого файла должна совпадать. По большому счету не важно какая она. Но это только предположение.

По сабжу - перечитал первый пост, простите, но так и не понял что надо сделать.
Ответить с цитированием
  #7 (permalink)  
Старый 24.10.2012, 11:34
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 23.10.2012
Сообщений: 17

Я понимаю, что кодировка должна совпадать. Сейчас, как обычно, до сервера не достучаться- провайдер жжет. Потом поищу.
По первому посту мне нужно привязать события, видимо... Я не знакома с JS, поэтому тяжко с терминологией.
Ответить с цитированием
  #8 (permalink)  
Старый 15.07.2014, 14:02
Новичок на форуме
Отправить личное сообщение для Шерапет Посмотреть профиль Найти все сообщения от Шерапет
 
Регистрация: 15.07.2014
Сообщений: 1

Всем привет!
Помогите пожалуйста разобраться с формой подсчета светового короба. Три дня подряд колдую, не могу понять где в коде собака порылась?
Суть проблемы в следующем:
Если указать параметры ширины и высоты, то показатель общей площади выводится верно. Далее выбираем форму короба, затем материал рекламной поверхности, тип подсветки и количество "1" шт., общая стоимость выводится верно, а показатель стоимости со скидкой дублирует стоимость без скидки. Но это еще пол беды.
Когда меняешь количество общая стоимость начинает врать. Причем, когда меняешь ширину и высоту при выбранном количестве "1" шт. снова показатели общей стоимости выводятся правильно.
Обнаружил еще косяк, который, судя по всему, и является причиной ошибки в подсчете: если не указывать габариты и количество штук, а выбрать только пункты из вкладок "Форма светового короба", "Материал рекламной поверхности" и "Тип подсветки", то в поле "Цена за 1 кв. м" появится действительная и правильная сумма. И вот эта самая сумма в дальнейшем, постоянно прибавляется к уже правильной сумме обшей стоимости.
Не знаю получилось ли у меня понятным для всех языком изложить суть проблемы?
Помогите, пожалуйста!
----------------------------
Код формы:
<style>
.input {
border: 1px solid #B4B4B4;
border-radius: 6px;
color: #000000;
padding-left: 4px;
}
</style>
<div class="form_descr"></div>
<form action="index.php" name="calcForm" id="calcForm" method="post">
<script>
function getImg(param, obj, mat_obj)
{
if(mat_obj=='profil')
{
switch(param){
case '2':
document.getElementById(obj).src = '/images/FormCalc/Forma.jpg';
document.getElementById("profil_hid").value="0";
break;
case '3':
document.getElementById(obj).src = '/images/FormCalc/profil_ag77.jpg';
document.getElementById("profil_hid").value="800";
break;
case '4':
document.getElementById(obj).src = '/images/FormCalc/profil_aer56.jpg';
document.getElementById("profil_hid").value="800";
break;
case '5':
document.getElementById(obj).src = '/images/FormCalc/profil_aer44.jpg';
document.getElementById("profil_hid").value="800";
break;
}
document.forms['calcForm'].elements['profil_hid'].fireEvent('change');
}
if(mat_obj=='upr')
{
switch(param){
case '2':
document.getElementById(obj).src = '/images/FormCalc/Material.jpg';
document.getElementById("upr_hid").value="0";
break;
case '3':
document.getElementById(obj).src = '/images/FormCalc/privod2.jpg';
document.getElementById("upr_hid").value="3200";
break;
case '4':
document.getElementById(obj).src = '/images/FormCalc/privod3.jpg';
document.getElementById("upr_hid").value="3700";
break;
case '5':
document.getElementById(obj).src = '/images/FormCalc/privod2.jpg';
document.getElementById("upr_hid").value="4700";
break;
case '6':
document.getElementById(obj).src = '/images/FormCalc/privod1.jpg';
document.getElementById("upr_hid").value="5700";
break;
}
document.forms['calcForm'].elements['upr_hid'].fireEvent('change');
}
if(mat_obj=='ustan')
{
switch(param){
case '2':
document.getElementById(obj).src = '/images/FormCalc/Podsvetka.jpg';
document.getElementById("ustan_hid").value="0";
break;
case '3':
document.getElementById(obj).src = '/images/FormCalc/rolstavni_montag02.jpg';
document.getElementById("ustan_hid").value="2000";
break;
case '4':
document.getElementById(obj).src = '/images/FormCalc/rolstavni_montag01.jpg';
document.getElementById("ustan_hid").value="4800";
break;
}
document.forms['calcForm'].elements['ustan_hid'].fireEvent('change');
}
}
</script>
<input type="hidden" name="profil_hid" id="profil_hid">
<input type="hidden" name="upr_hid" id="upr_hid">
<input type="hidden" name="ustan_hid" id="ustan_hid" >
<h2>Расчет стоимости световых и несветовых коробов</h2>
<table border="0" cellpadding="0" cellspacing="5">
<tbody><tr style="padding-top: 15px;">
<td>
Ширина:
<br>
<input class="input" size="5" name="width" value=""> см.
</td>
<td rowspan="7" valign="middle" align="center">
<img src="/images/FormCalc/Forma.jpg" alt="" id="profkart" width="384" border="0" height="164">
<br>
<img src="/images/FormCalc/Material.jpg" alt="" name="privkart" id="privkart" width="384" border="0" height="164">
<br>
<img src="/images/FormCalc/Podsvetka.jpg" alt="" name="montkart" id="montkart" style="margin-left: 10px;" width="374" border="0" height="150">
</td>
</tr>
<tr>
<td>
Высота:
<br>
<input class="input" size="5" name="height" value=""> см.
</td>
</tr>
<tr>
<td>
Форма светового короба:
<br>
<select class="input" name="profil" id="profil" onchange="getImg(this.value, 'profkart','profil');">
<option value="2" selected="selected">=Не выбрано=</option>
<option value="3">Короб простой формы</option>
<option value="4">Формы средней сложности</option>
<option value="5">Произвольные формы</option>
</select>
</td>
</tr>
<td valign="bottom">
Материал рекламной поверхности:&nbsp;
<br>
<select class="input" name="upr" id="upr" onchange="getImg(this.value, 'privkart','upr');" >
<option value="2" selected="selected">=Не выбрано=</option>
<option value="3">Баннер</option>
<option value="4">Сотовый поликарбонат</option>
<option value="5">Оргстекло (акрил)</option>
<option value="6">Композит</option>
</select>
</td>
</tr>
<tr>
<td>
Тип подсветки:
<br>
<select class="input" name="ustan" id="ustan" onchange="getImg(this.value, 'montkart','ustan');">
<option value="2" selected="selected">=Не выбрано=</option>
<option value="3">Люминесцентные лампы</option>
<option value="4">Светодиодные модули</option>
</select>
</td>
</tr>
<tr>
<td>
Количество:
<br>
<input class="input" size="5" value="0" name="kolvo"> шт.
</td>
</tr>
<tr>
<td colspan="2" valign="bottom" height="50">
<input onclick="document.forms['calcForm'].elements['ustan_hid'].fireEvent('change')" value="Посчитать" type="button" name="option" class="button">
<br>
<input class="button" type="reset" name="reset" value="Очистить" onclick="change(),newdoc()" />
</td>
</tr>
</tbody></table>
<div>
Площадь конструкции: <span id="rez3_disp">&nbsp;</span><input type="hidden" id="rez3" name="rez3" value=""/> кв.м
<br>
Цена за 1 кв. м: <span id="rez4_disp">&nbsp;</span><input type="hidden" id="rez4" name="rez4" value=""/> руб
<br>
Цена со скидкой 5%: - <span id="rez2_disp">&nbsp;</span><input type="hidden" id="rez2" name="rez2" value=""/> руб
<br>
Цена без скидки <span id="rez1_disp">&nbsp;</span><input type="hidden" id="rez1" name="rez1" value=""/> руб<br>
</div>
<div name="rast" id="rast">
</div>
<br>
<p>При оформлении предварительного заказа через интернет, Вы получаете скидку 5% на изготовление наружной рекламы.</p>
<p>Изготовление наружной и интерьерной рекламы можно заказать прямо сейчас, кликнув на кнопке «Отправить». Наши специалисты помогут Вам выбрать тип рекламной конструкции, качественные и недорогие материалы для ее изготовления, произведут замеры и монтаж рекламных конструкций.</p>
--------------------------------------------
Формула подсчета:

rez1=(({profil_hid}+{upr_hid}+{ustan_hid})*{rez3}) *{kolvo}
rez2=({rez3}*({profil_hid}+{upr_hid}+{ustan_hid})* {kolvo})-{skidka}
rez3=(({width}*{height})*{kolvo})/10000
rez4={profil_hid}+{upr_hid}+{ustan_hid}
skidka=(0.05*{rez3}*({profil_hid}+{upr_hid}+{ustan _hid})*{kolvo})
Ответить с цитированием
  #9 (permalink)  
Старый 25.07.2014, 05:24
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Шерапет,
rez1={rez4}*{rez3}
rez2=0.95*{rez1}
rez3=({width}*{height}*{kolvo})/10000
rez4={profil_hid}+{upr_hid}+{ustan_hid}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание ярлыка на рабочем столе ufastudio Общие вопросы Javascript 3 24.10.2012 12:00
Создание скрипта "Итеррационные циклы" по формуле krasopetka Общие вопросы Javascript 0 17.11.2011 12:42
Создание скрипта! Создание диктанта для учеников! Елизавета Работа 10 30.06.2010 21:00
Создание копий объекта - обязателен ли prototype? heh131 Общие вопросы Javascript 12 15.05.2010 12:55
Скрипт калькулятора ЕМС-почты России battrack Ваши сайты и скрипты 2 03.03.2009 20:20