Как запретить ввод текста в input
Задача такая: Нужно запретить ввод любых символов кроме цыфр в поле ввода. Подскажите решение :help:
|
Нашел ответ:
<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: |
Такое решение вызывает перерисовку поля ввода, что кажется не очень эстетично. Как заблокировать ввод символов???
|
в html5 у полей появился новый атрибут - pattern, значением которого является рега на JS.
введите НЕчисла и нажмите отправить. <form> <input pattern="\d+" maxlength="14"> <input type="submit" value="Отправить" name="numbers" title="Просто числа"> </form> |
есть много готовых решений на javascript
в поисковике поищите что-то вроде 'mask input jquery' |
melky, как-то мне не нравится такая реализация. Было бы намного прикольнее, если бы оно не позволяло вводить ничего, кроме чисел...
Но вообще - круто, конечно) |
я обычно делаю так, очень простой вариант.
код 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);"> |
/[^\d]/маргинально) |
Цитата:
<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) ничего не возвращает? |
мне мой вариант устраивает.но спорить не буду, возможно ваш вариант работает быстрее и лучше. Возьму на заметку.
про return согласен, это рудимент от каких-то испытаний остался=) про check промолчу, дело каждого. будь моя воля я бы вообще всё на чистом русском писал. непонимаю, на самом деле таких гонений родного языка. хотя зависит от проекта. для себя пишу proverka, для крупных написал бы CheckDigit или что-то в этом духе. |
Цитата:
Цитата:
|
Никто так и не смог добится запрета на ввод! Все решения через замену с некрасивой перерисовку поля ввода((( ЖАЛЬ!
|
Цитата:
|
Цитата:
НЕ ПАШЕТ ЭТОТ ВАРИАНТ В ПРИМЕРЕ |
Цитата:
|
OPERA)
в лисе таже фигня дебаггер дает ошибку document.getElementById("d-only") is null |
Цитата:
2. А коли для себя и очень хочется, то и в js нет проблоем: Пример: ужасы и извращения
var переменная="такие дела"; сообщение=function(текст){alert(текст)}; сообщение(переменная) |
Цитата:
Короче, там только keyCode, его и проверяешь. Чтобы работали шифты/контролы - записываешь их значения в массив и каждый раз проверяешь, нет ли совпадению по этому массиву. А ещё есть ie, в котором нет определения шифта и контрола (в шестом, во всяком случае). Под них пишем фиксы. Для нормальных - то, что тут. |
Цитата:
Тут пашет, тут не пашет))))))))) |
Вот похожее решение с помощью jQuery
<form id="login_form"> <input type="text" class="asci_only mail" name="login" /> <input type="password" name="password" /> <input type="submit" /> </form> <script type="text/javascript"> $('input.asci_only').keypress( function(e) { if($.browser.msie) return isAsci(e.keyCode) else return (e.keyCode) ? true : isAsci(e.charCode) }); function isAsci(cCode){ return /[a-zA-Z0-9@\.]/.test(String.fromCharCode(cCode)) } $('input.mail').change( function() { if(!validateEmail(this.value)){ alert('Введите email') this.focus() return false } return true }); $('#login_form').submit( function(){ return $('input.mail').change() }) }) function validateEmail(email){ return (email.search(/^[^@\s]+@[^@\s]+\.[^@\s]{2,}$/) == 0) ? true : false } </script> |
Цитата:
|
Цитата:
|
для IE и старго подобного? он давно есть. не стану искать и показывать, но он точно есть :)
|
Ну вот, опять. Только что-то придумаешь - а это уже придумали, оказывается)
|
а потом они говорят, что мы велосипеды придумываем
|
Вот-вот)
Идею мне, идею! (:D) |
пошел флуд)))
|
С jQuery можно так:
$('input').keypress(function(event){ if (event.which < 48 || event.which > 57) return false; }); |
filan, ты молодец, конечно, но стрелочкам твой код работать не даёт.
BoSO, хотим и флудим) |
?! уточни - каким стрелочкам?
<!DOCTYPE HTML> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> </head> <body> <input type="text"> <script> $('input').keypress(function(event){ if (event.which < 48 || event.which > 57) return false; }); </script> </body> </html> |
trikadin, извини. В FF действительно не дает. В хроме и и IE8 все OK.
|
А как запретить ввод определенного символа?
Задача: Когда 2 раза кликаешь по полю input бывает он запоминает введенное слово или же когда вводишь в него чтоб удаляло символ ":" если он будет введен?? К примеру я ввожу Иванов: и тут же сразу это регулярное выражение убирает в конце вот этот символ двоеточие : вот как то так. |
Помогите пожалуйста с этой регуляркой.
Заранее огромное спасибо) |
[^:] //Любой символ, кроме двоеточия |
Если не js то мб подойдет
< input disabled="true" /> |
почему если я вешаю обработчик нечего не работает?
<input id="d-only"><input id="b-only"> function fu(event){ event= event || window.event; //alert(event) if (event.charCode && (event.charCode < 48 || event.charCode > 57))// проверка на event.charCode - чтобы пользователь мог нажать backspace, enter, стрелочку назад... return false; }; document.getElementById("d-only").onkeypress = fu document.getElementById("b-only").addEventListener("keypress", fu, false) |
Цитата:
event.preventDefault() |
Коммент врёт. Данный код позволяет вводить символы от 48 до 57 включительно. Т.е. цифры и ничего кроме цифр.)
|
Цитата:
|
рони, я туплю, пойду ка я спать=\.
|
Часовой пояс GMT +3, время: 05:22. |