|
Калькулятор - числа с запятой/точкой
Не пинайте жёстко - первый пост. Мне нужен 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 - то мозила не пропускает ввод чисел с точкой. Хотелось бы чтобы была возможность использования как точки так и запятой. Можете подсказать или подправить? |
|
<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>
|
Спасибо! Теперь считает с дробными числами.
Остаётся вопрос с мазилой, она не хочет пропускать дроби через точку (хром работает как с точкой так и с запятой). Нет ли способа подружить и мазилу с точкой? Или делать подсказку о вводе через запятую и рекомендацией на использование хром-браузера? |
Для данной операции и parseFloat() не потребуется, уж тогда проверять что возвращает parseFloat(), иначе ни к чему.
alert('0.5' * '0.7')
|
Цитата:
|
Цитата:
Хром работает как с точкой так и с запятой, а мазила если цифра с точкой подсвечиваем красным input и в результат ставит 0. Запятую обрабатывает правильно. |
Цитата:
|
можно создать свой кастомный input тогда будет работать
|
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>
|
| Часовой пояс GMT +3, время: 16:45. |
|