выбор value мз select'ов
Добрый день. Подскажите пожалуйста по следующем моменту: на странице несколько селектов. Нужно, что бы при выборе какого то значения его value добавлялся в сумму. Застрял на моменте, когда меняется id селекта. Т.е. к текущей сумме добавляется новое значение.
Как можно подправить условие? <!DOCTYPE html> <html> <head> <script src="//code.jquery.com/jquery-git2.js"></script> <meta charset="utf-8"> <title>JS Bin</title> </head> <body> <select id="section1" onchange="check_my_select(event)"> <option value="1">value1</option> <option value="2">value2</option> <option value="3">value3</option> </select> <br /> <select id="section2" onchange="check_my_select(event)"> <option value="4">value1</option> <option value="5">value2</option> <option value="6">value3</option> </select> <hr /> <label id="result">Итоговая стоимость</label> </body> </html> function check_my_select(ev){ var id = ev.target.id; var value_s = parseFloat($("#"+id+" :selected").val()); change_result(value_s, id); } var res = 0; var old_val = 0; var old_id = ""; function change_result(add_val, id_name){ if (old_id == id_name){ if(old_val != add_val){ res = parseFloat(res - old_val + add_val); } } if (old_id != id_name){ res = parseFloat(res + add_val); } $("#result").text(res); old_id = id_name; old_val = add_val; } |
onchange="check_my_select(this)
function check_my_select(elem) if(elem.id=='blah-blah') // и так далее |
Это что за на? -
Цитата:
от id зависит только значение значения. Ну то есть в зависимости от формулы. Если это сумма - вообще не зависит. PS Вы похоже придумали что value лежит в option. Оно там есть, но select относится к категории переключателей и его value всегда равно value выбранного option. Из интерфейса options не может быть не выбран, а вот из скрипта можно поставить selectedIndex=-1. Вроде того. ЗЗЫ Из кодов все равно не понял что вы там хотите посчитать, изложите ТЗ человеческим языком. |
Я может быть конечно не понимаю какого то сакрального значения всех твоих old_val и old_id но...
Если я правильно понял - у тебя несколько селектов из которых складывается общая стоимость, и при изменении ты хочешь пересчитывать ее? Если так то не городи огороды, на это хватит 1й функции - в цикле пробежаться по всем селектам и суммировать их value. Все. <select id="section1 mySelect" onchange="check_my_select(event)"> <option value="1">value1</option> <option value="2">value2</option> <option value="3">value3</option> </select> <br /> <select id="section2 mySelect" onchange="check_my_select(event)"> <option value="4">value1</option> <option value="5">value2</option> <option value="6">value3</option> </select> check_my_select = function(){ var result = 0; $.each($('.mySelect'),function(){ result +=this.value; }) $("#result").text(result ); } Заметь я установил селектам класс что бы не дрючиться с id |
Там ещё несколько чекбоксов будет.
Напиши пожалуйста пример функции (Хотяб для 2х селектов). Я пробовал, но у меня там кода больно много получается. Для value каждого селекта делал отдельную переменную. |
Спасибо, разобрался!:) Для чекбоксов беру уже готовое значение из резалта и его правлю.
|
Цитата:
form.addEventListener('change',calc); var calc=function(event) { var tokens='var res='; for(var i=0;i<this.elements.i++) tokens+=this.elements[i].value; tokens+=';'; eval(tokens); console.log(res); // тут результат }; соответственно в option у вас выражение, а не число, например <option value="-2"> <option value="/2"> <option value="/Math.sqrt(6)"> etc. В принципе можно и без выражений, нормально, то есть вычитание это сложение с отрицательным, деление это умножение на обратную величину, извлечение корня - возведение в дробную степень и тп. :) |
Часовой пояс GMT +3, время: 00:21. |