Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2017, 15:50
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Калькулятор - числа с запятой/точкой
Не пинайте жёстко - первый пост. Мне нужен JavaScript и чтобы его освоить нужна помощь на этом форуме. Надеюсь быстро освою форум и буду делать в дальнейшем всё правильно, согласно установленным обычаям.

Пишу калькулятор. Подключена jQuery.
Не могу разобраться: проблема чтобы сделать возможность ввода чисел с сотыми (два знака после запятой).

Код HTML:
<div>
<h4>Прямоугольник</h4>
<p>Длина прямоугольника: <input id="val_a" type="number" step="0.01" min="0.01" /></p>
<p>Ширина прямоугольника: <input id="val_b" type="number" step="any" min="0.01"/></p>
<div>Площадь прямоугольника:<span id="pls"></span> м.кв.</div>
</div>


Скрипт:
var a, b;
		
	a = $('#val_a').val();	//Длина прямоугольника
	b = $('#val_b').val();	//Ширина прямоугольника
		
	a = parseInt(a);
	b = parseInt(b);
		
	pl_s = a * b;	//Площадь
		
	$('#pls').html(pl_s);


У меня получается parseInt игнорирует при расчёте знаки после точки или запятой.
А если убираю parseInt - то мозила не пропускает ввод чисел с точкой.

Хотелось бы чтобы была возможность использования как точки так и запятой.
Можете подсказать или подправить?
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2017, 15:55
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

нужен не parseInt a parseFloat

https://developer.mozilla.org/ru/doc...cts/parseFloat
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2017, 16:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<html>
<head>
</head>
<body>
	<div>
		<h4>Прямоугольник</h4>
		<p>Длина прямоугольника: <input id="val_a" type="number" step="0.01" min="0.01" /></p>
		<p>Ширина прямоугольника: <input id="val_b" type="number" step="0.01" min="0.01"/></p>
		<div>Площадь прямоугольника:<span id="pls"></span> м.кв.</div>
	</div>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
	<script>

		$('input').on('input', function(){
			var a, b;
	a = $('#val_a').val();	//Длина прямоугольника
	b = $('#val_b').val();	//Ширина прямоугольника
	
	a = parseFloat(a);
	b = parseFloat(b);
	
	pl_s = a * b;	//Площадь
	
	$('#pls').html(pl_s);
});
		
</script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2017, 16:38
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Спасибо! Теперь считает с дробными числами.

Остаётся вопрос с мазилой, она не хочет пропускать дроби через точку (хром работает как с точкой так и с запятой).
Нет ли способа подружить и мазилу с точкой? Или делать подсказку о вводе через запятую и рекомендацией на использование хром-браузера?
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2017, 16:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Для данной операции и parseFloat() не потребуется, уж тогда проверять что возвращает parseFloat(), иначе ни к чему.

alert('0.5' * '0.7')
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2017, 16:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MC-XOBAHCK
Остаётся вопрос с мазилой, она не хочет пропускать дроби через точку
Не наоборот ли?
Ответить с цитированием
  #7 (permalink)  
Старый 10.08.2017, 16:51
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от laimas Посмотреть сообщение
Не наоборот ли?
Нет.
Хром работает как с точкой так и с запятой, а мазила если цифра с точкой подсвечиваем красным input и в результат ставит 0. Запятую обрабатывает правильно.
Ответить с цитированием
  #8 (permalink)  
Старый 10.08.2017, 17:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MC-XOBAHCK
Хром работает как с точкой так и с запятой
А, речь о формате ввода в поле. Это локаль, и ввод значит по ней, тут ничего не попишешь. А подсветка о том и сообщает, что формат не верный.
Ответить с цитированием
  #9 (permalink)  
Старый 10.08.2017, 17:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

можно создать свой кастомный input тогда будет работать
Ответить с цитированием
  #10 (permalink)  
Старый 10.08.2017, 17:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

MC-XOBAHCK,
<!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() { $('input').on('input', function(){
var a, b, pl_s;

  a = $('#val_a').val().trim().replace(/,/,'.');	//Длина прямоугольника
  b = $('#val_b').val().trim().replace(/,/,'.');;	//Ширина прямоугольника

  a = parseFloat(a)||0;
  b = parseFloat(b)||0;

  pl_s = a * b;	//Площадь

  $('#pls').html(pl_s.toFixed(2));
    })
});
  </script>
</head>

<body>
<div>
<h4>Прямоугольник</h4>
<p>Длина прямоугольника: <input id="val_a"  /></p>
<p>Ширина прямоугольника: <input id="val_b" /></p>
<div>Площадь прямоугольника:<span id="pls"></span> м.кв.</div>
</div>

</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейший калькулятор на JS. Нужна помощь. Siverena Общие вопросы Javascript 2 06.04.2017 13:42
Заставить калькулятор считать дробные числа с запятой. webmanss Элементы интерфейса 3 10.03.2016 16:07
Нужно чтобы калькулятор выводил в резултатах только целые числа Valtar7 Общие вопросы Javascript 2 18.08.2015 10:43
калькулятор на javascript vera0907 Events/DOM/Window 7 24.03.2015 15:12
JS задача. Взаимно простые числа sashok Общие вопросы Javascript 5 23.11.2014 10:16