Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2014, 19:51
Новичок на форуме
Отправить личное сообщение для rielter_al Посмотреть профиль Найти все сообщения от rielter_al
 
Регистрация: 06.03.2014
Сообщений: 2

Ввод денежной суммы
Для ввода в поле денежной суммы использую код:
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 запятую и в качестве разделителя использовать, кроме запятой, еще и точку? Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2014, 20:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

rielter_al,
Ввод только цифр с запятой или точкой... вариант

<!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>

Последний раз редактировалось рони, 06.03.2014 в 20:41.
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2014, 21:18
Новичок на форуме
Отправить личное сообщение для rielter_al Посмотреть профиль Найти все сообщения от rielter_al
 
Регистрация: 06.03.2014
Сообщений: 2

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

Последний раз редактировалось rielter_al, 06.03.2014 в 21:22.
Ответить с цитированием
  #4 (permalink)  
Старый 07.03.2014, 19:36
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

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

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

//...

case 5: // double
	if (!isNumber(value)) throw errmsg.number;
		value = parseFloat(value.replace(",", "."));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничение на ввод в инпут (цифры, точка, минус) Fenec Events/DOM/Window 4 24.07.2015 07:40
Ввод ссылка в адресной строке Alfer Элементы интерфейса 11 24.11.2013 20:30
Ввод последовательности чисел dotwatt Элементы интерфейса 1 24.04.2012 19:16
Запрет на ввод определенных символов в поле TEXT vah-smile (X)HTML/CSS 2 23.07.2011 23:30
Масскированный ввод часов и минут pt81 jQuery 0 29.10.2010 17:24