Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2020, 17:37
Аватар для Diiim
Интересующийся
Отправить личное сообщение для Diiim Посмотреть профиль Найти все сообщения от Diiim
 
Регистрация: 07.03.2018
Сообщений: 20

Калькулятор вычитание без отрицательных чисел
Доброго времени, уважаемые форумчане!

Подскажите как убрать в калькуляторе убрать отрицательные числа?
Есть простенький скрипт ui слайдера, считает отлично, но вот когда доходит до снижения вычисления, то начинаются отрицательные числа.

Есть такой html

<span>Количество участников: <input type="text" class="num-bers" disabled="" id="amount_1" value="0"></span>

<!-- ui слайдер -->
<div class="sli-der-calc" id="sli-der-1"></div>

<span class="in-cell" id="amount_1_1">5770 ₽</span>


$(function() {
   $("#sli-der-1").slider({
      value: 0,
      min: 0,
      max: 100,
      step: 1,
      slide: function(event, ui) {
         $("#amount_1").val(ui.value);
         var temp = Number($('#amount_1').val());
         var noLL = $("#amount_1_1").text("0 р");
         var nnn = $("#amount_1_1").text(47770 - temp * 1500 + " ₽"); // Вычисления кладу в переменную
         if (nnn > 0) { // потом проверяю больше ли 0
            $("#amount_1_1").text(String($("#amount_1_1").text().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 '))); // если да вывожу
         } else {
            return noLL // если нет то "0 руб."
         }
      }
   });
});


Можете подсказать что я делаю не так? Или может я не в ту сторону "смотрю"?

Здесь можно наглядно посмотреть qpage.site/prj_pin/

Скрин - joxi.ru/zAN90B9S6Z3JD2

Последний раз редактировалось Diiim, 30.01.2020 в 17:40.
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2020, 18:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Diiim,
<!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>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <script>
$(function() {
   $("#sli-der-1").slider({
      value: 0,
      min: 0,
      max: 100,
      step: 1,
      slide: function(event, ui) {
         var nnn = 47770 - ui.value * 1500;
         if (nnn > 0) { // потом проверяю больше ли 0
            nnn = (nnn + "").replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ') // если да вывожу
         } else {
           nnn = 0
         }
         $("#amount_1_1").text(nnn + " ₽")
      }})
});


  </script>
</head>
<body>
<span>Количество участников: <input type="text" class="num-bers" disabled="" id="amount_1" value="0"></span>

<!-- ui слайдер -->
<div class="sli-der-calc" id="sli-der-1"></div>

<span class="in-cell" id="amount_1_1">47 770 ₽</span>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2020, 21:08
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Diiim, не используйте этот ui-слайдер, он не везде работает (например, в браузере Chrome на Android) Также не понятно, почему вы запрещаете ввод через текстовое поле (это была бы возможность ввести, если не работает слайдер от jQuery, но на jQuery это решается очень сложно с учётом того, что нужна двусторонняя связь)

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<style>
		input[type="range"] {
			display: block;
			width: 100%;
		}
	</style>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
	<script>
		$(function() {
			$("#slid-er-1").on("input", function(event) {
				var price = Math.max(0, 47770 - this.value * 1500);
				price = String(price).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ")
				$("#amount_1_1").text(price + " ₽")
				$(".num-ber").val(this.value);
			});
		});
  </script>
</head>
<body>
	<span>Количество участников: <input type="text" class="num-ber" disabled id="amount_1" value="0"></span>
	<!-- ui слайдер -->
	<input type="range" min="0" max="100" step="1" value="0" class="slid-er-calc" id="slid-er-1"></input>
	<span class="in-cell" id="amount_1_1">47 770 ₽</span>
</body>
</html>
Я вам рекомендую вместо jQuery начать переходить на React, тогда такие проблемы будут легко решаться.

ЕЩЁ На самом деле слово по слогам делится так — slid-er

Последний раз редактировалось Malleys, 30.01.2020 в 21:14.
Ответить с цитированием
  #4 (permalink)  
Старый 31.01.2020, 06:32
Аватар для Diiim
Интересующийся
Отправить личное сообщение для Diiim Посмотреть профиль Найти все сообщения от Diiim
 
Регистрация: 07.03.2018
Сообщений: 20

рони, Malleys, весьма благодарен Вам за помощь! Все отлично работает.

Malleys, да Вы правы, что то в мобильном браузере гугл не двигается мой ползунок, а ваш прекрасно работает.
Сейчас буду исправлять, пусть лучше будет работает на большинстве девайсах чем через раз. И по гуглил, вроде как не много можно его кастомизировать. Буду пробовать.

Ребят, еще раз большое спасибо за решения, а самое главное что не прошли "мимо"!
Ответить с цитированием
  #5 (permalink)  
Старый 31.01.2020, 12:04
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Diiim
И по гуглил, вроде как не много можно его кастомизировать. Буду пробовать.
Cлайдер хорошо стилизируется в большинстве современных браузеров. Просто нужно знать, при помощи каких селекторов обратиться к его внутренностям. Вот пример стилизации вашего слайдера. https://codepen.io/Malleys/pen/jOEjYNN?editors=1100

Если вы не используете препроцессор SCSS, то отредактируйте стили на codepen в моём примере, а затем нажмите стрелочку вниз и выберите «View compiled CSS» это будет обычный CSS, который вы можете вставить к себе на сайт.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор случайных чисел без повторений в последующих генерациях Samik Общие вопросы Javascript 14 12.03.2023 00:35
Нужен генератор случайных чисел без Math.random Kirill_98 Учебные материалы 39 16.02.2018 22:20
Можно ли сравнивать переменные без чисел? Crinson Общие вопросы Javascript 0 13.07.2017 10:35
Сумма чисел фиббоначи без использования функций и массивов. mariaanina Общие вопросы Javascript 4 03.06.2014 17:22
как сделать чтобы калькулятор считал автоматически без нажатия на кнопку станислав123 Общие вопросы Javascript 1 14.12.2012 17:54