Javascript.RU

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

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

$('.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 - точка).
Как правильно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2010, 16:25
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Fenec
Как правильно сделать?
Как вариант, отслеживать изменение поля и просто убирать ненужные символы регулярным выражением...
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2010, 23:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от 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>
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2010, 20:59
Новичок на форуме
Отправить личное сообщение для gotravel Посмотреть профиль Найти все сообщения от gotravel
 
Регистрация: 13.04.2009
Сообщений: 4

function DPCM(input) {
    var value = input.value;
    var re = /[^0-9\-\.]/gi;
    if (re.test(value)) {
        value = value.replace(re, '');
        input.value = value;
}}
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2015, 07:40
Новичок на форуме
Отправить личное сообщение для I_CaR Посмотреть профиль Найти все сообщения от I_CaR
 
Регистрация: 12.12.2013
Сообщений: 6

А вот гениальное решение (правда не моё)
<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>
Ответить с цитированием
Ответ



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

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