Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.10.2014, 11:52
Аватар для new_guy
Интересующийся
Отправить личное сообщение для new_guy Посмотреть профиль Найти все сообщения от new_guy
 
Регистрация: 09.08.2011
Сообщений: 27

выбор 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;
  
}
Ответить с цитированием
  #2 (permalink)  
Старый 02.10.2014, 12:15
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

onchange="check_my_select(this)

function check_my_select(elem)

if(elem.id=='blah-blah')
// и так далее
Ответить с цитированием
  #3 (permalink)  
Старый 02.10.2014, 12:17
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это что за на? -

Цитата:
var value_s = parseFloat($("#"+id+" :selected").val());
Валуе в elem.value

от id зависит только значение значения. Ну то есть в зависимости от формулы. Если это сумма - вообще не зависит.

PS Вы похоже придумали что value лежит в option. Оно там есть, но select относится к категории переключателей и его value всегда равно value выбранного option. Из интерфейса options не может быть не выбран, а вот из скрипта можно поставить selectedIndex=-1. Вроде того.

ЗЗЫ Из кодов все равно не понял что вы там хотите посчитать, изложите ТЗ человеческим языком.

Последний раз редактировалось kostyanet, 02.10.2014 в 12:25.
Ответить с цитированием
  #4 (permalink)  
Старый 02.10.2014, 12:26
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Я может быть конечно не понимаю какого то сакрального значения всех твоих 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

Последний раз редактировалось krasovsky, 02.10.2014 в 12:31.
Ответить с цитированием
  #5 (permalink)  
Старый 02.10.2014, 12:31
Аватар для new_guy
Интересующийся
Отправить личное сообщение для new_guy Посмотреть профиль Найти все сообщения от new_guy
 
Регистрация: 09.08.2011
Сообщений: 27

Там ещё несколько чекбоксов будет.
Напиши пожалуйста пример функции (Хотяб для 2х селектов). Я пробовал, но у меня там кода больно много получается. Для value каждого селекта делал отдельную переменную.
Ответить с цитированием
  #6 (permalink)  
Старый 02.10.2014, 12:41
Аватар для new_guy
Интересующийся
Отправить личное сообщение для new_guy Посмотреть профиль Найти все сообщения от new_guy
 
Регистрация: 09.08.2011
Сообщений: 27

Спасибо, разобрался! Для чекбоксов беру уже готовое значение из резалта и его правлю.
Ответить с цитированием
  #7 (permalink)  
Старый 02.10.2014, 15:10
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от new_guy
Там ещё несколько чекбоксов будет.
Значит
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.

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитировать выбор в списке select cha0s jQuery 1 27.03.2014 19:43
Выбор всех Select kvaleksandr Элементы интерфейса 12 27.10.2012 20:55
Поиск и выбор папки с максимально поздней датой создания. Майя Общие вопросы Javascript 1 13.04.2012 16:11
Выбор из таблицы HOmevl Общие вопросы Javascript 4 15.09.2011 01:40
Выбор фреймворка маина Библиотеки/Тулкиты/Фреймворки 12 14.03.2009 22:21