2009-04-28 3 views
2

Мне удалось найти решение для этого в C#/.net, но не для обычного веб-html. Если уже есть ответ, дайте мне знать, и я закрою вопрос.Javascript Regex Only Textbox

Как создать текстовое поле, которое разрешит определенные символы (например, буквенно-цифровые) на основе заданного регулярного выражения (например, [a-zA-Z0-9])? Поэтому, если пользователь пытается ввести что-либо еще, вставьте его, оно будет удалено или не разрешено.

<input type="text" class="alphanumericOnly"> 
+0

Вы даже пытались найти решение, которое уже существует в Интернете? Я уверен, что они там, и я действительно не хочу быть вашей машинистки, поэтому идите в Google, и когда у вас возникнет вопрос о деталях, вернитесь сюда, если вы не хотите заплатить мне за то, что вы напишете код для вас. –

+1

Здесь вы найдете: http://www.xploredotnet.com/2007/09/restrict-alphabet-input-in-textbox_20.html –

+1

Правильно, я мог бы это сделать, однако использование SO для ответов также имеет возможность генерировать обсуждение, новые идеи и т. д., а не просто статический сайт. Спасибо за вашу помощь, хотя – SeanDowney

ответ

4

Основная функция будет таким:

string = string.replace(/[^a-zA-Z0-9]/g, '') 

Это заменит любой символ, который не описывается [a-zA-Z0-9].

Теперь вы можете либо поместить его непосредственно в элемент декларации:

<input type="text" class="alphanumericOnly" onkeyup="this.value=this.value.replace(/[^a-zA-Z0-9]/g, '')"> 

Или (как вы использовали класс подсказку) присвоить это поведение каждого input элемента с классом alphanumericOnly:

var inputElems = document.getElemenstByTagName("input"); 
for (var i=0; i<inputElems.length; i++) { 
    var elem = inputElems[i]; 
    if (elem.nodeName == "INPUT" && /(?:^|\s+)alphanumericOnly(?:\s+|$)/.test(elem.className) { 
     elem.onkeyup = function() { 
      this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
     } 
    } 
} 

Но, возможно, это проще сделать с помощью jQuery или другого фреймворка JavaScript:

$("input.alphanumericOnly").bind("keyup", function(e) { 
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
}); 
0

Если у вас есть вход, хранящуюся в переменной input ...

input.onkeyup(function(e) { 
    this.value = this.value.replace(/\W/g, ''); 
} 

После каждого нажатия клавиши значение входа будет лишен каких-либо не буквенно-цифровых символов.

0

Если вы используете метод .replace в событии keyup, вход будет мерцать с не буквенно-цифровыми символами по мере их ввода, что кажется неаккуратным и не соответствует таким людям OCD, как я.

уборщик подходом было бы связать с событием нажатия клавиши и отрицают символы, прежде чем они поступают на вход, как показано на следующем:

$('.alphanumericOnly').keypress(function(e){ 
    var key = e.which; 
    return ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 95 && key <= 122)); 
}); 

Перечень основных кодов клавиш можно найти here, если этот конкретный набор не соответствует вашим конкретным потребностям.