Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.06.2016, 12:47
Интересующийся
Отправить личное сообщение для core Посмотреть профиль Найти все сообщения от core
 
Регистрация: 13.11.2012
Сообщений: 19

Упростить код функции для select
Решаю задачу - суммирование цены в зависимости от выбранных select.
Как упростить код - чтоб не подключаться к каждому select по ID? Зашел в тупик и написал такое ..

$(function(){ 
	var StandartValSel = 0;		
	var optionVal = 0;		
	

		$('select').on('change', function (e) {
        optionVal += parseInt( $(e.target).find("option:selected").val() );
		
		$('#price').text(optionVal);
	})
})

Пример HTML
<div id="price">0</div>
<select class="form-control " id="id1">
				<option value="0">Select:</option>
				<option value="110">110 Euro</option>
				<option value="120">120 Euro</option>
				<option value="130">130 Euro</option>
			</select>

			<select class="form-control " id="id2">
				<option value="0">Select:</option>
				<option value="10">10  Euro</option>
				<option value="20">20 Euro</option>
				<option value="30">30 Euro</option>
			</select>
			
			<select class="form-control " id="id3">
				<option value="0">Select:</option>
				<option value="210">210  Euro</option>
				<option value="220">220 Euro</option>
				<option value="230">230 Euro</option>
			</select>

Последний раз редактировалось core, 29.06.2016 в 12:49.
Ответить с цитированием
  #2 (permalink)  
Старый 29.06.2016, 12:57
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

$(function(){ 

	var optionVal = 0;		
	
		$('select').on('change', function (e) {
        optionVal += +$(e.target).val();
		
		$('#price').text(optionVal);
	});
});
Ответить с цитированием
  #3 (permalink)  
Старый 29.06.2016, 13:36
Интересующийся
Отправить личное сообщение для core Посмотреть профиль Найти все сообщения от core
 
Регистрация: 13.11.2012
Сообщений: 19

Сообщение от Rasy Посмотреть сообщение
$(function(){ 

	var optionVal = 0;		
	
		$('select').on('change', function (e) {
        optionVal += +$(e.target).val();
		
		$('#price').text(optionVal);
	});
});
Спасибо, красиво вы ее.. но есть момент.
optionVal += +$(e.target).val();
у нас все время додается значения, а как заставить обновлять значение из селекта .. и получать суму из трех селектов
https://jsfiddle.net/core18/6bm3xvce/

Последний раз редактировалось core, 29.06.2016 в 13:51.
Ответить с цитированием
  #4 (permalink)  
Старый 29.06.2016, 14:29
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

<!DOCTYPE html>
<html>

  <head>
    <script data-require="jquery@3.0.0" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script>

$(function(){ 

	var optionVal = 0;
	
		$('select').on('change', function (e) {

        optionVal = $('select').map(function(i, el) {
          return $(el).val();
        }).get().reduce(function(p,c,i,a) {
          return +p + +c;
        });
        
  	    $('#price').text(optionVal);
	  });

});


    </script>
  </head>

  <body>
    <div id="price">0</div>
    <select class="form-control " id="id1">
      <option value="0">Select:</option>
      <option value="110">110 Euro</option>
      <option value="120">120 Euro</option>
      <option value="130">130 Euro</option>
    </select>
    <select class="form-control " id="id2">
      <option value="0">Select:</option>
      <option value="10">10  Euro</option>
      <option value="20">20 Euro</option>
      <option value="30">30 Euro</option>
    </select>
    <select class="form-control " id="id3">
      <option value="0">Select:</option>
      <option value="210">210  Euro</option>
      <option value="220">220 Euro</option>
      <option value="230">230 Euro</option>
    </select>
  </body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 29.06.2016, 15:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

сумма нескольких select
Rasy,
минимизировал
<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8">
    <script data-require="jquery@3.0.0" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script>
$(function(){
    var $sel = $('select'), sum;
    $sel.on('change', function (e) {
        sum = [].reduce.call($sel,function(a, b) {
          return a + +b.value;
        },0);
  	    $('#price').text(sum);
    });
});
    </script>
  </head>

  <body>
    <div id="price">0</div>
    <select class="form-control " id="id1">
      <option value="0">Select:</option>
      <option value="110">110 Euro</option>
      <option value="120">120 Euro</option>
      <option value="130">130 Euro</option>
    </select>
    <select class="form-control " id="id2">
      <option value="0">Select:</option>
      <option value="10">10  Euro</option>
      <option value="20">20 Euro</option>
      <option value="30">30 Euro</option>
    </select>
    <select class="form-control " id="id3">
      <option value="0">Select:</option>
      <option value="210">210  Euro</option>
      <option value="220">220 Euro</option>
      <option value="230">230 Euro</option>
    </select>
  </body>

</html>
Ответить с цитированием
  #6 (permalink)  
Старый 29.06.2016, 16:06
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

core,
$(function(){
	var value, $price = $('#price'), $select = $('select').on({
		'change': function(e) { value = 0, $select.trigger('adding'), $price.text(value) }, 
		'adding': function(e) { value += +this.value }
	});
});
Ответить с цитированием
  #7 (permalink)  
Старый 29.06.2016, 16:07
Интересующийся
Отправить личное сообщение для core Посмотреть профиль Найти все сообщения от core
 
Регистрация: 13.11.2012
Сообщений: 19

Спасибо большое. Буде разбираться и изучать...
от меня + в карму

Последний раз редактировалось core, 29.06.2016 в 16:09.
Ответить с цитированием
  #8 (permalink)  
Старый 29.06.2016, 16:16
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Сообщение от рони
минимизировал
мастер рефакторинга
Ответить с цитированием
  #9 (permalink)  
Старый 29.06.2016, 16:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Rise,
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
наложение картинки для кнопки со стрелкой в теге select Nailya (X)HTML/CSS 2 17.05.2013 10:21
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15
Код для опроса ortmeer (X)HTML/CSS 5 11.07.2012 23:09
Проверка существования входного параметра для функции Axe Я не знаю javascript 2 25.05.2009 14:58
Применение функции для каждого элемента sergeygerasimov jQuery 2 26.11.2008 11:15