2010-06-17 7 views

ответ

6

Если у вас есть текстовое поле, то вы должны справиться с onkeypress события

<input type='text' onkeypress='keypresshandler(event)' /> 

Вы можете использовать следующую функцию, чтобы ограничить пользователь

function keypresshandler(event) 
    { 
     var charCode = event.keyCode; 
     //Non-numeric character range 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    } 
+0

Мы делаем это так: – Znarkus

+0

Я пробовал этот подход и нашел, что вам нужно использовать onkeypress = 'return keypresshandler (event)' для его работы. – Bill

14

Вы можете сделать это с помощью JavaScript (так если javascript отключен, вы не сможете его ограничить)

<input type="text" onkeyup="this.value = this.value.replace(/[^a-z]/, '')" /> 

Этот wil Я ограничиваю его только символами a-z. Оформить заказ regular expressions, чтобы увидеть, что вы можете сделать

+7

Помните, что этот код выполняется только на стороне клиента. Сценарий сервера должен быть готов обрабатывать ** любые ** входные данные и отклонять недействительные символы. –

+1

Для этого требуется глобальный флаг в регулярном выражении. Это происходит из-за того, что вы можете удерживать клавишу нажатой и заставлять ее совершать много ключевых событий (и добавлять много чисел) до выпуска, и в этот момент происходит только одно событие с ключом ... что означает только одно из, возможно, многих нежелательных символов get deleted, так как без глобального флага он заменяет только 1 на вызов. –

1
function isNumberKey1(evt) 
{ 
     var charCode = (evt.which) ? evt.which : event.keyCode; 
     if (char!=8(charCode < 65 || charCode > 106)) 
     return false; 

     return true; 
} 
+0

Пожалуйста, добавьте описание к вашему коду. Почему ваше решение лучше, чем другие опубликованные решения? – Artemix

2

Хотя все еще возможно, с HTML5 нет никакой реальной необходимости использовать решение JavaScript на основе этого требования.

<input type="text" name="text" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"> ограничит допустимые символы в соответствии с шаблоном RegExp (в данном случае: действительными адресами электронной почты).

Атрибут title будет использоваться как предупреждение/уведомление, когда пользователь попытается отправить данные, не соответствующие требованиям.

<form action="/add_country.php"> 
    Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> 
    <input type="submit"> 
</form> 

Для получения дополнительной информации см. documentation on HTML input element. Не все браузеры поддерживают его одинаково хорошо (например, Safari).

0

Ответ Бен Роу - это действительно способ приблизиться к нему. Однако символ будет отображаться в текстовом поле перед его удалением. Вы можете предотвратить это с помощью oninput вместо onkeyup:

<input type="text" oninput="this.value = this.value.replace(/[^a-z]/, '')" /> 
Смежные вопросы