ограничить пользовательский ввод с помощью javascript

Может ли кто-нибудь показать мне пример ограничения пользовательского ввода (в теге ввода) в Javascript?

Что-то, что, когда мы устанавливаем ввод (type="text") только для числового ввода, поэтому он будет игнорировать любой другой ввод, кроме числового...

Я думаю, что это удобно для ввода чисел (таких как почтовый индекс, кредитная карта, деньги, стоимость, оценка, дата и т. д.), и если вы можете, покажите мне, как создать ввод с помощью шаблона, что-то вроде:

Please Input Date:
|-----------------|
|     /     /     |
|-----------------|

PS: я слышал, что WebForms 2.0 будет поддерживать это в будущем... (браузер, совместимый с Acid 3?)

тип ввода="дата"
тип ввода="время"
тип ввода="число"
тип ввода="деньги"

Но это были только новости из будущего :D


person Dels    schedule 18.03.2009    source источник


Ответы (3)


Это может помочь вам.

http://www.w3schools.com/jsref/event_onkeydown.asp

<html>
<body>

<script type="text/javascript">
function noNumbers(e)
{
var keynum;
var keychar;
var numcheck;

if(window.event) // IE
{
keynum = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which;
}
keychar = String.fromCharCode(keynum);
numcheck = /\d/;
return !numcheck.test(keychar);
}
</script>

<form>
<input type="text" onkeydown="return noNumbers(event)" />
</form>

</body>
</html>
person はると    schedule 18.03.2009
comment
Да, это работает для простой фильтрации символов... но как насчет полноценных форматов, таких как дата (мм/дд/гг). Вы не можете просто вернуть false, если это неправильный формат, иначе вы никогда не сможете ввести первые цифры. - person Julian Aubourg; 18.03.2009
comment
Нет, это правда, но это дает определенное представление о том, как это можно сделать. FX. вы сможете ввести только 0 и 1 в первом символе строки даты. Если пользователь введет число выше этого, номер не будет зарегистрирован. Но да, эти конкретные коды не делают всего волшебства. - person はると; 18.03.2009
comment
да, я просто прокомментировал для ясности ;) - person Julian Aubourg; 18.03.2009

На этот вопрос уже есть принятый ответ, но я думаю, что есть лучшее решение. Вам не нужно реализовывать это самостоятельно при нажатии клавиши и т. Д., Для этого есть библиотеки. Они называют технику, которую вы описываете, «масками ввода». Проверьте этот подключаемый модуль jQuery, он делает именно то, что вам нужно.

person Tim Büthe    schedule 07.04.2009
comment
Этот плагин jQuery потрясающий. - person Matthew; 14.03.2014
comment
Мне нравится этот плагин, но проблема остается с несколькими устройствами Android как в родном браузере, так и в браузере Chrome, где слишком много проблем. По большей части, когда дело доходит до Android, я обычно полностью снимаю маску. - person isaac weathers; 28.05.2014

Вы можете использовать определенные библиотеки, такие как jQuery Validate (или что-то еще, что предлагает ваша JS-инфраструктура) при отправке формы. Другое решение состоит в том, чтобы управлять значением событий keyUp и blur, но это может стать довольно запутанным, чтобы решить, что делать с неправильно отформатированной записью (особенно, когда формат немного сложен, т.е. не только нежелательные символы). Итак, в целом, я бы рекомендовал контроль на стороне клиента при отправке.

person Julian Aubourg    schedule 18.03.2009