Маскировка Редактировать два формата кода для одного текстового поля ввода - PullRequest
1 голос
/ 07 июля 2011

У меня есть две маски G999-9 и H99-9, которые обозначают выпускников и дипломы, которые необходимо ввести для одного элемента управления HTML для ввода текста.

При первом наборе, если он попадет в GI,Мне бы хотелось, чтобы он отображал формат для формата «Выпускник», а для «Наград», я хотел бы, чтобы он отображал формат для формата «Награды» при его наборе.Есть ли простой способ сделать это в javascript или jQuery?

Примеры:

G111-1
H91-5
G001-3
G___-_  (If you hit G it should show the Graduate format)
H__-_   (If you hit H it should show the Honors format.)
____-_  (Type anything else, or nothing do this.)

Спасибо, Марк

Ответы [ 3 ]

3 голосов
/ 20 августа 2011

Демонстрация на основе регулярных выражений

Ура! регулярное выражение! Да, как и у всех других (не HTML) вопросов разбора, для этого есть регулярное выражение. :)

$("input").keyup(function(e){
    if(e.keyCode > 40 || e.keyCode < 37)
    {
        var validInput = $(this).val().match(/(([G])(([0-9]{3}[-]([0-9]{0,1})?|[0-9]{0,3})?)?|([H])(([0-9]{2}[-]([0-9]{0,1})?|[0-9]{0,2})?)?)/);
        $(this).val(validInput?validInput[0]:"")
    }
});

Это немного запутанно (помощь в оптимизации было бы очень ценно), но это работает.

2 голосов
/ 26 ноября 2012

Существует несколько плагинов jQuery для простого преобразования ввода текста в редактирование маски:

2 голосов
/ 20 августа 2011

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

Обычно мы используем для этого регулярные выражения, но при условии, что вы не так много знаете о регулярных выражениях (возможно,неверное предположение, но большинство людей, которые могут их читать, будут в первую очередь стремиться к ним), и в надежде на то, чтобы вы следили за тем, что происходит, я написал это более процедурно:1006 *http://jsfiddle.net/UdcND/

...