Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Ввод денежной суммы (https://javascript.ru/forum/events/45581-vvod-denezhnojj-summy.html)

rielter_al 06.03.2014 19:51

Ввод денежной суммы
 
Для ввода в поле денежной суммы использую код:
function proverka(input) {
        ch = input.value.replace(/[^\d,]/g, ''); //разрешаем вводить только числа и запятую
        pos1 = ch.indexOf(','); // проверяем, есть ли в строке запятая
        if (pos1 != -1) { // если запятая есть
            if ((ch.length - pos1) > 3) { // проверяем, сколько знаков после запятой, если больше 2 то
                ch = ch.slice(0, -1); // удаляем лишнее
            }
        }     
        input.value = ch; // приписываем в инпут новое значение
    };

Подскажите как изменить код, чтобы можно было вводить только 1 запятую и в качестве разделителя использовать, кроме запятой, еще и точку? Заранее благодарен!

рони 06.03.2014 20:33

rielter_al,
Ввод только цифр с запятой или точкой... вариант
:write:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
    function proverka(val) {
        var reg = [/^\D+/,/[^.,\d]+/g,/[\.,]+/,/(\d+\.\d{2}).*$/],
        ch = val.replace(reg[0], '').replace(reg[1], '').replace(reg[2], '.').replace(reg[3], '$1');
        return ch;
    };

  </script>
</head>

<body>
  <input name="" oninput="this.value=proverka(this.value)" >
</body>

</html>

rielter_al 06.03.2014 21:18

рони, спасибо, то что надо!

kostyanet 07.03.2014 19:36

Все делается не так. Пользователь вводит что хочет, а на его счет записывается что получилось.

var isNumber = function(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
};

//...

case 5: // double
	if (!isNumber(value)) throw errmsg.number;
		value = parseFloat(value.replace(",", "."));


Часовой пояс GMT +3, время: 11:26.