Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможность ввода только цифр и запятой (https://javascript.ru/forum/misc/8242-vozmozhnost-vvoda-tolko-cifr-i-zapyatojj.html)

Катерина 16.03.2010 14:12

Возможность ввода только цифр и запятой
 
Мне нужно, чтобы пользователь имел возможность вводить только цифры и запятую (для отделения дробной части числа).
Делаю так
//Происходит автоматическая вставка вот таких полей
....
<input type=\"text\"  id=\"r'+q+p+'\" size=\"15\" onkeyup=\"return proverka(this);\">
...

//Функция
function proverka(input) { 
    var value = input.value; 
    var rep = /[a-zA-Zа-яА-Я]/; 
    if (rep.test(value)) { 
        value = value.replace(rep, ''); 
        input.value = value; 
    };
};

Срабатывает только со второго раза. Почему? Как можно это исправить?

B@rmaley.e><e 16.03.2010 14:36

<input type="text" size="15" onkeyup="return proverka(this);" onchange="return proverka(this);" />
<script type="text/javascript">
function proverka(input) { 
    input.value = input.value.replace(/[^\d,]/g, '');
};

</script>

Катерина 17.03.2010 14:49

У меня через onChange вызывается функция отправки на почту:
<input type=\"text\"  id=\"r'+q+p+'\" size=\"15\" onkeyup=\"return proverka(this);\" onChange=\"msg(this.form)\">

А если делаю Вашим способом (но убираю onChange), то проблема не решается (так же в первом поле буквы вводятся в последующих нет (как и надо)), но на почту не отправляется.

Андрейка 09.12.2010 11:02

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 47859)
<input type="text" size="15" onkeyup="return proverka(this);" onchange="return proverka(this);" />
<script type="text/javascript">
function proverka(input) { 
    input.value = input.value.replace(/[^\d,]/g, '');
};

</script>

Скрипт очень помог спасибо.

А ограничение количества вводимых чисел можете добавить?
Например чтобы вводилось не менее 6 знаков но не более 12.

ksa 09.12.2010 11:29

Цитата:

Сообщение от Андрейка
А ограничение количества вводимых чисел можете добавить?

У строки есть свойство length - проверяй его и делай соответствующие выводы.

Андрейка 09.12.2010 12:01

Цитата:

Сообщение от ksa (Сообщение 82956)
У строки есть свойство length - проверяй его и делай соответствующие выводы.

Если не сложно разместите полный код.

ksa 09.12.2010 12:51

Варианты кода есть тут
http://javascript.ru/String

Андрейка 09.12.2010 14:00

Цитата:

Сообщение от ksa (Сообщение 82970)
Варианты кода есть тут
http://javascript.ru/String

Цитата:

<input type="text" size="15" onkeyup="return proverka(this);" onchange="return proverka(this);" />
<script type="text/javascript">
function proverka(input) { 
    input.value = input.value.replace(/[^\d,]/g, '');
};

</script>

Если не сложно допишите этот код. Что-то у меня ничего неполучается.

ksa 09.12.2010 14:45

Цитата:

Сообщение от Андрейка
у меня ничего неполучается

А деньги есть? :D

boomrest 07.02.2012 10:54

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 47859)
<input type="text" size="15" onkeyup="return proverka(this);" onchange="return proverka(this);" />
<script type="text/javascript">
function proverka(input) { 
    input.value = input.value.replace(/[^\d,]/g, '');
};

</script>

Как сделать, чтобы можно было только одну запятую вводить?

poorking 07.02.2012 11:13

<input id = "#guilty" />
<button id = "#check" >check</button>
<script type = "text/javascript">

document.getElementById("#check").onclick = function () {
    alert(/^\s*[\d]+(?:,[\d]+)?\s*$/.test(document.getElementById("#guilty").value) );
}
</script>

rubilikxp 26.06.2014 00:08

Цитата:

Сообщение от boomrest (Сообщение 155860)
Как сделать, чтобы можно было только одну запятую вводить?

<input type="text" name="test"
onkeypress="if((event.keyCode < 44) || (event.keyCode > 44)) event.returnValue=false">


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