Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с умножением списка на чекбокс (https://javascript.ru/forum/misc/13039-pomogite-s-umnozheniem-spiska-na-chekboks.html)

Resident 13.11.2010 18:40

Помогите с умножением списка на чекбокс
 
в общем вот форма
http://icqzasms.ru/z/345.php
если надо пхп скажите
В общем, Уважаемые, подскажите как выводить стоимость без перезагрузки
там две формы, вторая зависимая от первой, при её выборе отображается стоимость, при выборе чекбокса умножается на определённый коэффициент, на пхп сделал, но изза второго сабмита приходится переделать на яве, кто подкинет хотябы примерчик буду признателен

Gvozd 13.11.2010 19:01

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

Resident 13.11.2010 19:05

ну я и говорю, примерчик если можно по сути :) времени совсем нет чтоб всё читать по яве с начала(

Resident 13.11.2010 19:49

вот набрасал ...
действую в верном направлении?)
...
<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&nbsp;раза&nbsp;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 никак не реагирует на изменения

monolithed 13.11.2010 19:53

1. Используйте специальные теги для форматирования кода
2.
Цитата:

Сообщение от Resident
вторая зависимая от первой

что должно быть во втором списке?

Resident 13.11.2010 20:28

во второй вот это
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&nbsp;раза&nbsp;350');

Resident 13.11.2010 22:18

Всё сделал, закройте\делитните

monolithed 13.11.2010 23:50

Что же вы нагородили то?

<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>

Resident 14.11.2010 00:08

Спасиб вам огромное, но ,извините, в вашем варианте чекбокс в обратную сторону не работает и в ие совсем он не работает. так же ещё во втором списке у меня не числовые данные стоят а текстовые которые при выборе приравниваются к числу.
я сделал, всё отлично как надо, Но оно(подсчёт) не работает ТОЛЬКО в 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&nbsp;раза&nbsp;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>&nbsp; отмечены поля, обязательные для ввода</div>
<br>Стоимость
     <table><tr><td id="result">

12 
 </td></tr></table>

monolithed 14.11.2010 00:29

Мне было сложно ориентироваться в вашем коде из-за того что он не оптимизирован, поэтому мне было проще заново все написать :)

Цитата:

Сообщение от Resident
в вашем варианте чекбокс в обратную сторону не работает

Я специально так сделал
Цитата:

Сообщение от Resident
в ие совсем он не работает

Чекбокс теперь и в IE работает, просто забыл, что onchange не заменил на onclick, в вашем случае нужно сделать тоже самое

Цитата:

Сообщение от Resident
так же ещё во втором списке у меня не числовые данные стоят а текстовые которые при выборе приравниваются к числу

Подправить это 2 минуты (дабавить еще один вложенный массив, а значения из value брать)


Часовой пояс GMT +3, время: 12:19.