Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Ограничение на ввод в инпут (цифры, точка, минус) (https://javascript.ru/forum/events/13245-ogranichenie-na-vvod-v-input-cifry-tochka-minus.html)

Fenec 22.11.2010 15:51

Ограничение на ввод в инпут (цифры, точка, минус)
 
Хочу ограничить ввод в инпут только цифрами, точкой, запятой, минусом.
Делаю так:

$('.prices').keypress(function(e) {
if(e.which!=8 && e.which!=0 && e.which!=109 && e.which!=188 && e.which!=190 && (e.which<48 || e.which>57)) return false;
});

Цифры дает писать, а остальные значения нет (109 - минус, 188 - запятая, 190 - точка).
Как правильно сделать?

ksa 22.11.2010 16:25

Цитата:

Сообщение от Fenec
Как правильно сделать?

Как вариант, отслеживать изменение поля и просто убирать ненужные символы регулярным выражением...

рони 22.11.2010 23:47

Цитата:

Сообщение от Fenec
Хочу ограничить ввод в инпут только цифрами, точкой, запятой, минусом.

<!DOCTYPE html >
<html >
<head>
  <title></title>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function(){
$('.prices').keypress(function(e) {
if (!(e.which==8 || e.which==44 ||e.which==45 ||e.which==46 ||(e.which>47 && e.which<58))) return false;
});
});
</script>
</head>
<body>
<input class="prices" />
</body>
</html>

gotravel 24.11.2010 20:59

function DPCM(input) {
    var value = input.value;
    var re = /[^0-9\-\.]/gi;
    if (re.test(value)) {
        value = value.replace(re, '');
        input.value = value;
}}

I_CaR 24.07.2015 07:40

А вот гениальное решение (правда не моё)
<input type="text" onkeyup="validate(this)"> даёт возможность вставить одну точку или одну запятую и цифры
<script>

function validate(inp) {
    inp.value = inp.value.replace(/[^\d,.]*/g, '')
                         .replace(/([,.])[,.]+/g, '$1')
                         .replace(/^[^\d]*(\d+([.,]\d{0,5})?).*$/g, '$1');
}

</script>


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