Ввод денежной суммы
Для ввода в поле денежной суммы использую код:
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 запятую и в качестве разделителя использовать, кроме запятой, еще и точку? Заранее благодарен! |
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>
|
рони, спасибо, то что надо!
|
Все делается не так. Пользователь вводит что хочет, а на его счет записывается что получилось.
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, время: 02:14. |