Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2018, 14:13
Интересующийся
Отправить личное сообщение для kk450 Посмотреть профиль Найти все сообщения от kk450
 
Регистрация: 14.06.2018
Сообщений: 25

Дублировать значение select s span
Здравствуйте есть форма:

Агрегат
<select name='sel1'>
 <option value='480'>Вал тип 1</option>
 <option value='556'>Вал тип 2</option>
</select><br>
Цена: <span id="sel1">0</span> руб

Центральная смазка
<select name='sel2'>
 <option value='0'>Нет</option>
 <option value='23'>Да</option>
</select><br>
Цена: <span id="sel2">0</span> руб


Двойной подшипник
<select name='sel3'>
 <option value='0'>Нет</option>
 <option value='22'>Да</option>
</select><br>
Цена: <span id="sel3">0</span> руб

Общая стоимость выбранных позиций: <span id="sum">0</span> руб




И обработчик:
<script type="text/javascript">
$(document).ready(function(){ $("select[name^='sel']").trigger('change'); }); //Установить цену при загрузке страницы

$("select[name^='sel']").change(function() {
  var s = $('select[name^="sel"] option:selected').map(function() {
  
   $("#sel1").innerHTML = s;   
 
    return this.value
  }).get()

  var sum = s.reduce((pv, cv) => {
    return pv + (parseFloat(cv) || 0);
  }, 0);
 $("#sum").text(sum.toLocaleString()); //Разделить разряды
})
</script>


Обработчик считает сумму выбранных опций и передает все это в переменную sum, это работает, но как выводить цену при изменении Select'a??? При изменении select sel1, возле него у span id должна измениться цена: <span id="sel1">0</span> руб. (цена равна value селекта). Таких селектов может быть до 15 штук

Вопрос для тех кто в знает ламерский, но очень прошу помочь
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2018, 14:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

kk450,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function(){
var sel = $("select[name^='sel']")
sel.change(function() {
  var sum = 0;
  sel.each(function(i, el) {
      var num  =  +this.value||0, id = "#"+this.name;
      sum += num;
      $(id).text(num)
  	});
  $("#sum").text(sum);
}).trigger('change')
});
</script>
</head>

<body>
Агрегат
<select name='sel1'>
 <option value='480'>Вал тип 1</option>
 <option value='556'>Вал тип 2</option>
</select><br>
Цена: <span id="sel1">0</span> руб
<br>
Центральная смазка
<select name='sel2'>
 <option value='0'>Нет</option>
 <option value='23'>Да</option>
</select><br>
Цена: <span id="sel2">0</span> руб

<br>
Двойной подшипник
<select name='sel3'>
 <option value='0'>Нет</option>
 <option value='22'>Да</option>
</select><br>
Цена: <span id="sel3">0</span> руб
<br>
Общая стоимость выбранных позиций: <span id="sum">0</span> руб



</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 14.06.2018, 14:39
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<script type="text/javascript">
$(document).ready(function(){ $("select[name^='sel']").trigger('change'); }); //Установить цену при загрузке страницы

$("select[name^='sel']").change(function() {
  var s = $('select[name^="sel"] option:selected').map(function() {
    return this.value;
  }).get()

  var sum = s.reduce((pv, cv) => {
    return pv + (parseFloat(cv) || 0);
  }, 0);

  $("span").each(function(i){
  	this.textContent = s[i];
  });

 $("#sum").text(sum.toLocaleString()); //Разделить разряды
});
Ответить с цитированием
  #4 (permalink)  
Старый 14.06.2018, 14:46
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Агрегат
<select name='sel1'>
 <option value='480'>Вал тип 1</option>
 <option value='556'>Вал тип 2</option>
</select><br>
Цена: <span id="sel1">0</span> руб <br>

Центральная смазка
<select name='sel2'>
 <option value='0'>Нет</option>
 <option value='23'>Да</option>
</select><br>
Цена: <span id="sel2">0</span> руб <br>


Двойной подшипник
<select name='sel3'>
 <option value='0'>Нет</option>
 <option value='22'>Да</option>
</select><br>
Цена: <span id="sel3">0</span> руб <br>

Общая стоимость выбранных позиций: <span id="sum">0</span> руб
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){ $("select[name^='sel']").trigger('change'); }); //Установить цену при загрузке страницы

$("select[name^='sel']").change(function() {
    $("#"+ this.name).html((+this.value).toFixed(2));  
  var s = $('select[name^="sel"] option:selected').map(function() {
  
    return this.value
  }).get()

  var sum = s.reduce((pv, cv) => {
    return pv + (parseFloat(cv) || 0);
  }, 0);
 $("#sum").text(sum.toFixed(2)); //Разделить разряды
})
</script>

Последний раз редактировалось Dilettante_Pro, 15.06.2018 в 10:06.
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2018, 06:52
Интересующийся
Отправить личное сообщение для kk450 Посмотреть профиль Найти все сообщения от kk450
 
Регистрация: 14.06.2018
Сообщений: 25

Спасибо большое!!! Очень выручили

Остановился на варианте Dilettante_Pro

Еще есть вопрос как к новой цене применить функцию разделения на разряды?

такой вариант не работает?

$("#"+ this.name).html(this.value.toLocaleString()); //Разделить разряды);
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2018, 08:01
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

kk450,
toLocaleString -метод для форматирования дат. Для выделения дробной части можно использовать toFixed. Про разбивку по разрядам поищите на форуме - было.
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2018, 08:08
Интересующийся
Отправить личное сообщение для kk450 Посмотреть профиль Найти все сообщения от kk450
 
Регистрация: 14.06.2018
Сообщений: 25

Dilettante_Pro,
Да находил много разных способов поищу еще, а как правильно вставить отформатированную строку в данном случае?

Всмысле в вашем способе добавить .toLocaleString строке, потом найду более подходящий способ разбить на разряды (в моем случае дробей не будет, но спасибо за наводку)
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2018, 10:01
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от kk450
а как правильно вставить отформатированную строку в данном случае?
если я правильно понял вопрос, то, например, так:
<span id="sel1">0</span> руб <br>
<script> 
var value = 556;
sel1.innerText = value.toFixed(2);
</script>

PS: изменил пример
Ответить с цитированием
  #9 (permalink)  
Старый 15.06.2018, 10:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Перечитал вопрос еще раз - похоже, неправильно понял. При разбивке на разряды число преобразуется в строку, которая потом и выводится в html
Разбить число на разряды

<span id="sel1">0</span> руб <br>
<script>
   var value = 3830000, str = value.toString(); 
   str = str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
   sel1.innerText = str;
</script>

Последний раз редактировалось Dilettante_Pro, 15.06.2018 в 11:37.
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2018, 10:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

разбить число
https://javascript.ru/forum/jquery/6...tml#post409196
https://javascript.ru/forum/project/...obelami-2.html
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение из select option vnmslf jQuery 19 21.07.2016 12:09
Проблемы с выпадающим списком JavaScript ursus102 Общие вопросы Javascript 0 16.01.2016 19:30
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15
Как сохранить предыдущее значение select? MaxD Общие вопросы Javascript 3 21.07.2011 12:36