Форматирование в 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, время: 12:32. |