выбор 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, время: 01:42. |