Форматирование в input ценовой информации c десятичной дробью.
Пожалуйста подскажите - как во время ввода числа в input сделать так, чтобы оно динамически форматировало данные по три знака с пробелом и после точки еще 2 числа можно ввести.
Например: ввод числа 1048766.75 сразу форматировало на 1 048 766.75? |
Цитата:
|
Цитата:
function splitNums(delimiter, str){
str = str.replace(/[^(\d)*((\.){1}?\d*)?$]/g, "");
str = str.replace(/(\d+)(\.\d+)?/g,
function (c, b, a) {
return b.replace(/(\d)(?=(\d{3})+$)/g, '$1' + delimiter) + (a ? a : '')
}
);
return str;
}
А то сейчас можно ввести и такое "444..554...97" Подскажите, пожалуйста. |
Цитата:
var re=/^\d+(.\d+)?$/;
var str='1234.1'
if (re.test(str)) {
alert('Ok');
} else {
alert('No');
};
|
Anastasi_, вот еще статейка...
http://miha.in/ru/articles/jsnumber |
Цитата:
|
Было решено вот так:
//ввод чисел в формате
function splitNums(delimiter, str) {
if (str == '.') return '';
str = str.replace(/[^\d\.]/g, "");
str = str.replace(/(\.)(.*?)\1/ig, '$1$2');
str = str.replace(/(\d+)(\.\d+)?/g,
function (c, b, a) {
return b.replace(/(\d)(?=(\d{3})+$)/g, '$1' + delimiter) + (a ? a : '')
}
);
return str;
}
Позволяет вводить только числа в формате 12 000.475. delimiter - любой разделитель, у меня пробел. Может кто предложит проще... |
мои 5 копеек
<html>
<head>
<meta charset="windows-1251">
</head>
<body>
<input id="input" />
<script>
input=document.querySelector("#input")
input.oninput=function(){
var s=this.value
s=s.replace(/(^\d|\d{3}\.\d{2}|\d{3}(?!($|\.)))/g, "$1 ")
s=s.replace(/\s+/g, " ")
this.value=s
}
</script>
</body>
</html>
Тут надо еще прибить валидацию. Например, такие числа как 11.11 следует считать недопустимыми, иначе работать не будет |
Блин, сколько геморроя-то. Вычислить ввод и вывести в формате не ортодоксально что ли?
По-моему это синдром вахтера. Мучают человека всякими правилами-законами, и вот он дорвался до креатива и будучи измученным начинает мучить других тем же самым. Ну или типа дедовщины что ли. Я даже проверил (хоть и так помнил) что даже в таких могучих програх как Корел или ФШ - ввод вычисляется и форматируется. Корел молча кладет на ошибки, ФШ пикает падла. Но никому в голову не пришло в этих корпорациях запрещать вводить какие-то символы. Избавляйтесь от синдрома вахтера. Юзер ввел - не тупой, а для тупых - бип и красная рамка - введи тупой правильно, вот так: пример. |
Более того, ТС вообще не понимает что все устроено в точности наоборот. Юзер вводит как хочет, а записывается - как надо. Затем при воспроизведении юзеру показывают как он привык.
Дебильный ввод попросту не имеет смысла, никакой дурак кроме воображаемого ТС не будет писать 123....456...789. Так не бывает. |
| Часовой пояс GMT +3, время: 13:02. |