Javascript.RU

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

Сообщение от Dilettante_Pro Посмотреть сообщение
Dilettante_Pro,
Перечитал вопрос еще раз - похоже, неправильно понял. При разбивке на разряды число преобразуется в строку, которая потом и выводится в 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>
Я вообще нуб в синтаксисе JS если можно поправьте на примере кода (в комментарии уточнил строку):

$(document).ready(function(){ $("select[name^='sel']").trigger('change'); }); //Установить цену при загрузке страницы
 
$("select[name^='sel']").change(function() {
    $("#"+ this.name).html(this.value); // КАК ТУТ ПРЕОБРАЗОВАТЬ СТРОКУ С РАЗДЕЛЕНИЕМ НА РАЗРЯДЫ???
  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.toLocaleString()); //Разделить разряды
})
</script>
Ответить с цитированием
  #12 (permalink)  
Старый 15.06.2018, 13:15
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

kk450,
$("#"+ this.name).html((+this.value).toLocaleString()); // КАК ТУТ ПРЕОБРАЗОВАТЬ СТРОКУ С РАЗДЕЛЕНИЕМ НА РАЗРЯДЫ???
Ответить с цитированием
  #13 (permalink)  
Старый 15.06.2018, 14:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Агрегат
<select name='sel1'>
 <option value='1480'>Вал тип 1</option>
 <option value='2556'>Вал тип 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(splitRange(+this.value));  
  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(splitRange(sum)); //Разделить разряды
})
function splitRange(val) {
   var str = val.toString(); 
   return str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
}
</script>
Ответить с цитированием
  #14 (permalink)  
Старый 18.06.2018, 07:00
Интересующийся
Отправить личное сообщение для kk450 Посмотреть профиль Найти все сообщения от kk450
 
Регистрация: 14.06.2018
Сообщений: 25

Dilettante_Pro,
Спасибо огромное! очень выручил
Ответить с цитированием
  #15 (permalink)  
Старый 18.06.2018, 09:02
Интересующийся
Отправить личное сообщение для kk450 Посмотреть профиль Найти все сообщения от kk450
 
Регистрация: 14.06.2018
Сообщений: 25

Dilettante_Pro,

Задача еще усложнилась:

Нужно добавить еще доставку, 2 вида (под ключи или до склада) выпадающие список ниже строки таблицы:

<tr><td>
Доставка и запуск под ключ</td>
<td>
<select name='dost1'>
 <option value='0'>Нет</option> <!-- в случае выбора этого пункта прибавить 0 к итогу -->
 <option value='3000'>Да</option> <!-- в случае выбора этого пункта, заблокировать dost2 прибавить 3000 к итогу -->
</select></td>
<td><span id="dost1">0</span>руб</td></tr>

<tr><td>
Доставка до склада</td>
<td>
<select name='dost2'>
 <option value='0'>Омск</option> <!-- value = 0% от sel1 -->
 <option value='1,5'>Новосибирск</option> <!-- в случае выбора этого пункта, заблокировать dost1 и 
 прибавить 1.5% от sel1 к итогу -->
 <option value='3'>Москва</option> <!-- в случае выбора этого пункта, заблокировать dost1 и 
 прибавить 3% от sel1 к итогу -->
</select></td>
<td><span id="dost2">0</span>руб</td></tr>


В комментариях примерно расписал, выбор любого пункта кроме первого выключает dost2 и наоборот.


Dilettante_Pro,
помоги еще с этим плиз, и кинь в личку номер карты, закину на пиво

Последний раз редактировалось kk450, 18.06.2018 в 09:52.
Ответить с цитированием
  #16 (permalink)  
Старый 18.06.2018, 12:04
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Агрегат
<select name='sel1'>
 <option value='1480'>Вал тип 1</option>
 <option value='2556'>Вал тип 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> руб<br><br>

<table>
<tr>
<td>Доставка и запуск под ключ</td>
<td>
<select name='dost1'>
 <option value='0'>Нет</option> <!-- в случае выбора этого пункта прибавить 0 к итогу -->
 <option value='3000'>Да</option> <!-- в случае выбора этого пункта, заблокировать dost2 прибавить 3000 к итогу -->
</select></td>
<td><span id="dost1">0</span>руб</td></tr>

<tr>
<td>Доставка до склада</td>
<td>
<select name='dost2'>
 <option value='-1'>Нет</option>
 <option value='0'>Омск</option> <!-- value = 0% от sel1 -->
 <option value='1.5'>Новосибирск</option> <!-- в случае выбора этого пункта, заблокировать dost1 и 
 прибавить 1.5% от sel1 к итогу -->
 <option value='3'>Москва</option> <!-- в случае выбора этого пункта, заблокировать dost1 и 
 прибавить 3% от sel1 к итогу -->
</select></td>
<td><span id="dost2">0</span>руб</td>
</tr>
</table>
<b>Итого с доставкой: <span id="result">0</span> руб<b>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
var sum = 0, dost = 0;
$(document).ready(function(){ $("select[name^='sel']").trigger('change'); }); //Установить цену при загрузке страницы

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

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

var dost1 = $("select[name='dost1']"), dost2 = $("select[name='dost2']"),
base = $("select[name='sel1'] option")[0].value;
dost1.change(function() {
    if(this.value == '0') {
     //  dost1.hide();
       dost2.show();
    }
    else {
       dost2.hide();  
   };
   dost = +this.value;
   $("#"+ this.name).html(splitRange(dost)); 
   $('#result').text(splitRange(sum + dost));
});
dost2.change(function() {
    if(this.value == '-1') {
       // dost2.hide();
       dost1.show();
       dost = 0;
    }
    else {
       dost1.hide();
       dost =Math.round(base * (+this.value) / 100);  
   };
   $("#"+ this.name).html(splitRange(dost)); 
   $('#result').text(splitRange(sum + dost));
});
function splitRange(val) {
   var str = val.toString(); 
   return str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
}
function joinRange(val) {
    return val.replace(/\s/gi,'');
};
</script>

Последний раз редактировалось Dilettante_Pro, 21.06.2018 в 10:07.
Ответить с цитированием
  #17 (permalink)  
Старый 18.06.2018, 14:00
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Dilettante_Pro,
доделал мальца, чтобы циферки в полях отображались
Агрегат
<select name='sel1'>
 <option value='1480'>Вал тип 1</option>
 <option value='2556'>Вал тип 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> руб<br><br>

<table>
<tr>
<td>Доставка и запуск под ключ</td>
<td>
<select name='dost1'>
 <option value='0'>Нет</option> <!-- в случае выбора этого пункта прибавить 0 к итогу -->
 <option value='3000'>Да</option> <!-- в случае выбора этого пункта, заблокировать dost2 прибавить 3000 к итогу -->
</select></td>
<td><span id="dost1">0</span>руб</td></tr>

<tr>
<td>Доставка до склада</td>
<td>
<select name='dost2'>
 <option value='-1'>Нет</option>
 <option value='0'>Омск</option> <!-- value = 0% от sel1 -->
 <option value='1.5'>Новосибирск</option> <!-- в случае выбора этого пункта, заблокировать dost1 и 
 прибавить 1.5% от sel1 к итогу -->
 <option value='3'>Москва</option> <!-- в случае выбора этого пункта, заблокировать dost1 и 
 прибавить 3% от sel1 к итогу -->
</select></td>
<td><span id="dost2">0</span>руб</td>
</tr>
</table>
<b>Итого с доставкой: <span id="result">0</span> руб<b>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
var sum = 0, dost = 0;
$(document).ready(function(){ $("select[name^='sel']").trigger('change'); }); //Установить цену при загрузке страницы

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

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

var dost1 = $("select[name='dost1']"), dost2 = $("select[name='dost2']");
dost1.change(function() {
    if(this.value == '0') {
       dost1.hide();
       dost2.show();
    }
    else {
       dost2.hide();  
   };
   dost = +this.value;
   $("#"+ this.name).html(splitRange(dost));  
   $('#result').text(splitRange(sum + dost));
});
dost2.change(function() {
    if(this.value == '-1') {
       dost2.hide();
       dost1.show();
       dost = 0;
    }
    else {
       dost1.hide();
       dost =Math.round(sum * (+this.value) / 100);  
   };
   $("#"+ this.name).html(splitRange(+dost));  
   $('#result').text(splitRange(sum + dost));
});
function splitRange(val) {
   var str = val.toString(); 
   return str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
}
function joinRange(val) {
    return val.replace(/\s/gi,'');
};
</script>
Ответить с цитированием
  #18 (permalink)  
Старый 18.06.2018, 14:06
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

j0hnik,

Да, про поля я забыл

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

А какой код нужен чтобы при выборе любого пункта кроме НЕТ второй способ доставки изчезал, но при возврате НЕТ чтобы второй способ появлялся, и наоборот

Иными словами на данный момент если хотябы раз после загрузки страницы был выбран любой вариант кроме НЕТ. То оба селекта одновременно не отображают НЕТ

Последний раз редактировалось kk450, 20.06.2018 в 11:08.
Ответить с цитированием
  #20 (permalink)  
Старый 20.06.2018, 11:55
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

kk450,
Убрать строки 72 и 83 - нумерация по примеру пост№16
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение из 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