Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как запретить ввод текста в input (https://javascript.ru/forum/dom-window/18022-kak-zapretit-vvod-teksta-v-input.html)

snizhok 13.06.2011 20:29

Как запретить ввод текста в input
 
Задача такая: Нужно запретить ввод любых символов кроме цыфр в поле ввода. Подскажите решение :help:

snizhok 13.06.2011 20:34

Нашел ответ:

<script>
function checkCurr(d) {
if(window.event)
{
if(event.keyCode == 37 || event.keyCode == 39) return;
}
d.value = d.value.replace(/\D/g,'');
}
</script>
<input type="text" onkeyup="checkCurr(this)">

может кому пригодится :victory:

BoSO 27.11.2011 05:21

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

melky 27.11.2011 11:12

в html5 у полей появился новый атрибут - pattern, значением которого является рега на JS.

введите НЕчисла и нажмите отправить.
<form>
<input pattern="\d+" maxlength="14">
<input type="submit" value="Отправить" name="numbers" title="Просто числа">
</form>

Pavel M. 27.11.2011 12:28

есть много готовых решений на javascript
в поисковике поищите что-то вроде 'mask input jquery'

trikadin 27.11.2011 14:02

melky, как-то мне не нравится такая реализация. Было бы намного прикольнее, если бы оно не позволяло вводить ничего, кроме чисел...

Но вообще - круто, конечно)

Rionty 27.11.2011 18:32

я обычно делаю так, очень простой вариант.
код js
function proverka(input) { 
	input.value = input.value.replace(/[^\d]/g, '');
};

пример использования
<input type="text" name="summa" value="" size="40" onkeyup="return proverka(this);" onchange="return proverka(this);">

Aetae 27.11.2011 19:12

/[^\d]/
маргинально)

trikadin 27.11.2011 19:19

Цитата:

Сообщение от Rionty
я обычно делаю так, очень простой вариант.

Простой !== хороший. Регулярки - не самая быстрая часть js. Лучше так:
<input id="d-only">
<script>
document.getElementById("d-only").onkeypress= function(event){
 event= event || window.event;
 if (event.charCode && (event.charCode < 48 || event.charCode > 57))// проверка на event.charCode - чтобы пользователь мог нажать backspace, enter, стрелочку назад...
  return false;
};
</script>


P. S. Кстати, зачем у вас в атрибуте стоит return, если ф-ция proverka (кстати, пишите всё-таки check) ничего не возвращает?

Rionty 27.11.2011 20:17

мне мой вариант устраивает.но спорить не буду, возможно ваш вариант работает быстрее и лучше. Возьму на заметку.
про return согласен, это рудимент от каких-то испытаний остался=)
про check промолчу, дело каждого. будь моя воля я бы вообще всё на чистом русском писал. непонимаю, на самом деле таких гонений родного языка.
хотя зависит от проекта. для себя пишу proverka, для крупных написал бы CheckDigit или что-то в этом духе.


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