У меня есть форма, которая довольно большая и построена с использованием информации из базы данных.
Для всех полей, классифицированных как "числовые", функция вызывает ключ, чтобы автоматически добавлять тысячи разделителей. Это работает хорошо
function commas(n){
n = n.replace(/,/g, '');
var s=n.split('.')[1];
(s) ? s='.'+s : s='';
n=n.split('.')[0]
while(n.length>3){
s=','+n.substr(n.length-3,3)+s;
n=n.substr(0,n.length-3)
}
return n+s
}
Однако я заметил, что если я хочу поместить небольшое десятичное значение в поле, которое вызывает это на клавише, оно удаляет период
2.3 => 23
Я не вижу, как это происходит: я написал эту функцию запятой с помощью кого-то из Stack.
Может ли кто-нибудь посоветовать? благодаря
Редактировать:
jsfiddle этого явления, я не собираюсь это делать;)
Проблема в том, что как только вы входите в ".", Код видит, что после него ничего нет и установите s = ''. Эффект заключается в том, что каждый раз, когда вы входите '.', Он снова удаляется.
Попробуйте что-то вроде этого:
function commas(n) {
n = n.replace(/,/g, '');
var s = n.split('.')[1];
(s)
? s = '.' + s
: n.indexOf('.') >= 0
? s = '.'
: s = '';
n = n.split('.')[0];
while (n.length > 3) {
s = ',' + n.substr(n.length - 3, 3) + s;
n = n.substr(0, n.length - 3);
}
return n + s;
}