2013-03-04 2 views
-1

У меня есть небольшая контактная форма html, содержащая только имя и телефон.Как ограничить ввод текста

То, что я пытаюсь сделать, - это когда происходит событие Key Up. Я хочу проверить, какая клавиша была нажата, а для поля Phone я бы принял только числа. Для поля Name я бы допустил только буквенные буквы, а не цифры.

Например, если я ввожу данные в ввод Phone, и я нажимаю на любой символ, но номер, он не должен отображаться в поле ввода.

Как я могу это сделать?

+1

[? Что вы пробовали] (http://whathaveyoutried.com) Вы вряд ли первым, чтобы спросить этот вопрос. –

+0

Покажите, что вы пробовали и объясните, что не работает. – isherwood

+0

Ну, я удалил большинство моих попыток, но, как правило, я попытался определить, какая клавиша была нажата, а затем проверить, является ли это номером/алфавитом. Не могу этого сделать .. Я застрял после проверки значения E события «Key Up», потому что я получаю число в результате, и я не знаю, как проверить, к какой категории он относится. – kfirba

ответ

1

HTML

<input type="text" name="phone" id="phone" placeholder="Phone" /><br /> 
<input type="text" name="name" id="name" placeholder="Name" /> 

JQuery

$("#phone").keyup(function() { 
    if (this.value.match(/[^0-9]/g)) { 
     this.value = this.value.replace(/[^0-9]/g, ''); 
    } 
}); 

$("#name").keyup(function() { 
    if (this.value.match(/[^a-zA-Z]/g)) { 
     this.value = this.value.replace(/[^a-zA-Z]/g, ''); 
    } 
}); 

Демо: http://jsfiddle.net/calder12/KfRxv/

+0

Это решение работает, но единственное, что меня беспокоит, это фактически показывает число/алфавит перед его удалением. Я бы хотел, чтобы это не показывало это число/алфавит. Это возможно? – kfirba

+0

Честно говоря, я так не думаю, браузер должен знать ключевое значение, прежде чем он сможет что-либо сделать, и он отобразит второе, что он знает, что это такое. –

+0

Я вижу. есть небольшая проблема. Мой язык - иврит, и если я набираю в поле «Имя» свои символы алфавита, он удаляет его. Как включить иврит? – kfirba

1

Для числовых символов только добавить следующий JavaScript:

function checkInput(e) 
{ 
    var k; 
    document.all ? k = e.keyCode : k = e.which; 
    var char = String.fromCharCode(k); 
    if(!char.match(/^\d+$/))return false; 

    return true; 
} 

Затем в разметке для вашего входного элемента добавить OnKeyPress = "возвращение checkInput (событие)".

Вы можете изменить JS, чтобы разрешать любые символы, которые вы хотите.

+0

Работает для чисел, но что, если я нажму BackSpace? есть проблема с этим: s – kfirba

+0

Вы можете изменить регулярное выражение на (/ [\ d \ b] /), чтобы получить как цифры, так и обратное пространство. На самом деле, у вас будет скрипка с регулярным выражением, чтобы она соответствовала всем вашим потребностям, но JS останется прежним. Если вы хотите разрешить только альфа-символы, вы должны изменить регулярное выражение для этого, то же самое, если вы хотите только разрешить специальные символы и т. Д. Предоставленный JS я больше представляет собой структуру, чем копировать-вставить на ваш сайт. – Geneb

Смежные вопросы