Помогите с умножением списка на чекбокс
в общем вот форма
http://icqzasms.ru/z/345.php если надо пхп скажите В общем, Уважаемые, подскажите как выводить стоимость без перезагрузки там две формы, вторая зависимая от первой, при её выборе отображается стоимость, при выборе чекбокса умножается на определённый коэффициент, на пхп сделал, но изза второго сабмита приходится переделать на яве, кто подкинет хотябы примерчик буду признателен |
Здравствуйте!
Судя по вашему сообщению, вы ну совсем не знаете javascript. Освойте основы языка и вопрос отпадет сам, полностью или частично. А с чем не справитесь - поможем. На сайте javascript можно начать изучать с учебника, раздел Основы javascript. Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/ Задавайте конкретные вопросы по ходу дела. |
ну я и говорю, примерчик если можно по сути :) времени совсем нет чтоб всё читать по яве с начала(
|
вот набрасал ...
действую в верном направлении?) ... <script> var Франция = Array('1 раз 10р.', '1 раз 10р.', '2 раза 40', '3 раза 50');var Россия = Array('1 раз 12р.', '2 раза 240 ТЕСТ','3 раза 250');var Турция = Array('2 раза 2140','3 раза 2150');var Германия = Array('2 раза 340','3 раза 350'); function showNames(v){ var mas = eval(v); var el = document.getElementById('names'); while(el.childNodes.length>0){ el.removeChild(el.childNodes[el.childNodes.length-1]); } for(var i=0;i<mas.length;i++){ var opt = document.createElement("option"); opt.innerHTML=mas[i]; el.appendChild(opt); } } // выше первая часть кода формирующая зависимый список var oplata = document.getElementById('names'); var oplata = document.getElementById('names'); var strana = document.getElementById('level'); function getCost(frm) { var rez = 0; var t = 6663; var norez = 0; if (oplata == "2 раза 240 ТЕСТ" && strana == "Россия") {t=1}; if (oplata == "3 раза 250" && strana == "Россия") {t=250}; if (oplata == "1 раз 12р." && strana == "Россия") {t=12}; if (oplata == "1 раз 10р." && strana == "Франция") {t=10}; if (oplata == "2 раза 40" && strana == "Франция") {t=40}; if (oplata == "3 раза 50" && strana == "Франция") {t=50}; if (oplata == "2 раза 2140" && strana == "Турция") {t=2140}; if (oplata == "3 раза 2150" && strana == "Турция") {t=2150}; if (oplata == "2 раза 340" && strana == "Германия") {t=340}; if (oplata == "3 раза 350" && strana == "Германия") {t=350}; norez = t; rez = 2*t; if (frm.dop.checked == true) {document.getElementById('result').innerHTML = rez }else{ document.getElementById('result').innerHTML = norez}; } </script> </head> <body onload="showNames('Франция')"> <form method="GET" name="formaa" id="txt" class="application" accept-charset="utf-8" action="" > <select name="strana" id="level" onchange="showNames(this.value); getCost(this.form)"> <option value="Россия">Россия</option> <option selected value="Франция">франция</option> <option value="Турция">турция</option> <option value="Германия">германия</option> </select> <select name="cena" id="names" onChange="getCost(this.form)"> </select> <input type="checkbox" name="dop" id="checkbox_0" value="0.2" onChange="getCost(this.form)" checked> Записывать звонки?<br> <br>Стоимость </form><table><tr><td id="result"></td></tr></table> ... вроде всё изменяется как надо но переменная t никак не реагирует на изменения |
1. Используйте специальные теги для форматирования кода
2. Цитата:
|
во второй вот это
var Франция = Array('1 раз 10р.', '1 раз 10р.', '2 раза 40', '3 раза 50');var Россия = Array('1 раз 12р.', '2 раза 240 ТЕСТ','3 раза 250');var Турция = Array('2 раза 2140','3 раза 2150');var Германия = Array('2 раза 340','3 раза 350'); |
Всё сделал, закройте\делитните
|
Что же вы нагородили то?
<script type="text/javascript"> window.onload = function(){ var array = [['1501', '1504', '1507'], ['1502', '1505', '1508'], ['1503', '1506', '1509']]; var select1 = document.getElementsByTagName('select')[0]; var select2 = document.getElementsByTagName('select')[1]; var input1 = document.getElementsByTagName('input')[0]; var span = document.getElementsByTagName('span')[0]; select1.onchange = function(){ select2.length = 0 for(var i=0; i<this.length; i++){ var options = document.createElement("option"); options.innerHTML = array[i][this.selectedIndex-1]; select2.appendChild(options); span.innerHTML = select2.options[select2.selectedIndex].innerHTML; input1.checked = false; } }; select2.onchange = function(){ for(var i=0; i<this.length; i++){ span.innerHTML = this.options[this.selectedIndex].innerHTML; } input1.checked = false; }; input1.onclick = function(){ if(span.innerHTML>0){ span.innerHTML = (this.checked == true) ? 1500 + parseInt(span.innerHTML, 10) : 0; } }; }; </script> <style type="text/css"> select, input { float: left; } </style> <form name="forma1" action="" method="post"> <select> <option selected="selected" disabled="disabled" value="0">- - выберите - - </option> <option value="1">Москва</option> <option value="2">С. Петербург</option> <option value="3">Челябинск</option> </select> </form> <form name="forma2" action="" method="post"> <select> <option selected="selected" disabled="disabled" value="0">- - выберите - - </option> </select> </form> <form name="forma3" action="" method="post"> <input type="checkbox" /> </form> <div>Стоимость: <span>0</span>р.</div> |
Спасиб вам огромное, но ,извините, в вашем варианте чекбокс в обратную сторону не работает и в ие совсем он не работает. так же ещё во втором списке у меня не числовые данные стоят а текстовые которые при выборе приравниваются к числу.
я сделал, всё отлично как надо, Но оно(подсчёт) не работает ТОЛЬКО в IE Прошу помочь в этом нелёгком деле вот мой код <script> var Франция = Array('1 раз 10р.', '2 раза 40','3 раза 50');var Россия = Array('1 раз 12р.', '2 раза 240 ТЕСТ','3 раза 250');var Турция = Array('2 раза 2140','3 раза 2150');var Германия = Array('2 раза 340','3 раза 350'); function showNames(v){ var mas = eval(v); var el = document.getElementById('names'); while(el.childNodes.length>0){ el.removeChild(el.childNodes[el.childNodes.length-1]); } for(var i=0;i<mas.length;i++){ var opt = document.createElement("option"); opt.innerHTML=mas[i]; el.appendChild(opt); } } function getCost(frm) { var oplata = document.getElementById('names').value ; var strana = document.getElementById('level').value ; var rez = 0; var norez = 0; var t = 0; if (oplata == "2 раза 240 ТЕСТ" && strana == "Россия") {t=1}; if (oplata == "3 раза 250" && strana == "Россия") {t=250}; if (oplata == "1 раз 12р." && strana == "Россия") {t=12}; if (oplata == "1 раз 10р." && strana == "Франция") {t=10}; if (oplata == "2 раза 40" && strana == "Франция") {t=40}; if (oplata == "3 раза 50" && strana == "Франция") {t=50}; if (oplata == "2 раза 2140" && strana == "Турция") {t=2140}; if (oplata == "3 раза 2150" && strana == "Турция") {t=2150}; if (oplata == "2 раза 340" && strana == "Германия") {t=340}; if (oplata == "3 раза 350" && strana == "Германия") {t=350}; norez = t; rez = 2*t; if (frm.dop.checked == true) {document.getElementById('result').innerHTML = rez }else{ document.getElementById('result').innerHTML = norez};} </script> </head> <body onload="showNames('Россия')"> <form method="GET" name="formaa" id="txt" class="application" accept-charset="utf-8" action="http://icqzasms.ru/z/oplata.php" > <select name="strana" id="level" onchange="showNames(this.value); getCost(this.form)"> <option value="Россия">Россия</option> <option value="Франция">франция</option> <option value="Турция">турция</option> <option value="Германия">германия</option> </select> <select name="cena" id="names" onChange="getCost(this.form)"> </select> <input type="checkbox" name="dop" id="checkbox_0" value="yes" onChange="getCost(this.form)" > Записывать звонки?<br> <div id=over_form><font color=#ff0000>*</font> отмечены поля, обязательные для ввода</div> <br>Стоимость <table><tr><td id="result"> 12 </td></tr></table> |
Мне было сложно ориентироваться в вашем коде из-за того что он не оптимизирован, поэтому мне было проще заново все написать :)
Цитата:
Цитата:
Цитата:
|
Спасибо вам, уважаемый!
совсем забыл про онклик для тупого ie =) но ещё один момент, в ie и только в нём значение, в моём коде, становится равным нулю не могли бы подсказать что и как. я кончено могу по вашему сделать всё, но убить ещё пол дня на то что бы разобраться в нём уже не хватит сиил |
У вас изначально значение берется из value, но потом оно теряется, а точнее становится значением переменной t. Если ее убрать, то сохраняется начальное значение. Но вам нужно чтобы значение менялось, для этого нужно чтобы обработчик события onchange постоянно проверял (имело активное) его наличие.
Посмотрите как у меня это реализовано: select1.onchange = function(){ for(var i=0; i<this.length; i++){ var options = document.createElement("option"); select2.appendChild(options); *!*span.innerHTML = select2.options[select2.selectedIndex].innerHTML;*/!* } }; select2.onchange = function(){ for(var j=0; j<this.length; j++){ *!*span.innerHTML = this.options[this.selectedIndex].innerHTML;*/!* } }; |
блиииин ничё не понятно. завтра с утра лучше поразбираюсь
|
monolithed,
на всякий случай ))) while(select2.childNodes.length>0){ select2.removeChild(select2.childNodes[select2.childNodes.length-1]); } можно сократить до select2.options.length=0; |
сделал как то так, всё равно не то :-?
function getCost(frm) { var oplata = document.getElementById('names').value ; var strana = document.getElementById('level').value ; var rez = 0; var norez = 0; var t = 0; oplata.onchange = function(){ for(var i = 0; i<this.length; i++){ if (oplata == "2 раза 240 ТЕСТ" && strana == "Россия") {t=1}; if (oplata == "3 раза 250" && strana == "Россия") {t=250}; if (oplata == "1 раз 12р." && strana == "Россия") {t=12}; if (oplata == "1 раз 10р." && strana == "Франция") {t=10}; if (oplata == "2 раза 40" && strana == "Франция") {t=40}; if (oplata == "3 раза 50" && strana == "Франция") {t=50}; if (oplata == "2 раза 2140" && strana == "Турция") {t=2140}; if (oplata == "3 раза 2150" && strana == "Турция") {t=2150}; if (oplata == "2 раза 340" && strana == "Германия") {t=340}; if (oplata == "3 раза 350" && strana == "Германия") {t=350}; }} norez = t; rez = 2*t; if (frm.dop.checked == true) {document.getElementById('result').innerHTML = rez }else{ document.getElementById('result').innerHTML = norez};} |
Resident,
Пример: Проглотить не думая или разобраться
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <title></title> <script> var strana = { "Франция" : ['1 раз 10р.', '1 раз 10р.', '2 раза 40', '3 раза 50'], "Россия" : ['1 раз 12р.', '2 раза 240 ТЕСТ','3 раза 250'], "Турция" : ['2 раза 2140','3 раза 2150'], "Германия" : ['2 раза 340','3 раза 350'] } function showNames(v){ var mas = strana[v]; var el = document.getElementById('names'); el.options.length=0; for(var i=0;i<mas.length;i++){ var opt = document.createElement("option"); opt.appendChild(document.createTextNode(mas[i])); el.appendChild(opt); } } function getCost(frm) { var oplata = document.getElementById('names'); oplata=oplata.options[oplata.selectedIndex].text; var strana = document.getElementById('level'); strana=strana.options[strana.selectedIndex].text; var rez = 0; var t = 6663; var norez = 0; if (oplata == "2 раза 240 ТЕСТ" && strana == "Россия") {t=1}; if (oplata == "3 раза 250" && strana == "Россия") {t=250}; if (oplata == "1 раз 12р." && strana == "Россия") {t=12}; if (oplata == "1 раз 10р." && strana == "Франция") {t=10}; if (oplata == "2 раза 40" && strana == "Франция") {t=40}; if (oplata == "3 раза 50" && strana == "Франция") {t=50}; if (oplata == "2 раза 2140" && strana == "Турция") {t=2140}; if (oplata == "3 раза 2150" && strana == "Турция") {t=2150}; if (oplata == "2 раза 340" && strana == "Германия") {t=340}; if (oplata == "3 раза 350" && strana == "Германия") {t=350}; norez = t; rez = 2*t; if (frm.dop.checked == true) {document.getElementById('result').innerHTML = rez } else{ document.getElementById('result').innerHTML = norez}; } </script> </head> <body onload="showNames('Франция')"> <form method="GET" name="formaa" id="txt" class="application" accept-charset="utf-8" action="" > <select name="strana" id="level" onchange="showNames(this.value); getCost(this.form)"> <option value="Россия">Россия</option> <option selected value="Франция">Франция</option> <option value="Турция">Турция</option> <option value="Германия">Германия</option> </select> <select name="cena" id="names" onChange="getCost(this.form)"></select> <input type="checkbox" name="dop" id="checkbox_0" value="0.2" onclick="getCost(this.form)" checked> Записывать звонки?<br> <br>Стоимость </form> <table><tr><td id="result"></td></tr></table> </body> </html> |
Рони, я вас не совсем понял. помогите пожалуйста мне ктонибудь что бы с ie этот код работал. monolithed мне подсказал, но в силу своих скромных знаний по яве я не сумел разобраться
|
Чем вас не устраивает пример рони?
|
простите пожалуйста меня за маю невнимательность :) просмотрел что есть код
Спасибо вам всем огромное:thanks: |
Часовой пояс GMT +3, время: 05:14. |