Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рег. вырожение + Javascript
 
 автор: Piom   (07.05.2009 в 11:12)   письмо автору
 
 

Подскажите как реализовать проверку вводимых значений в поле.
В поле необходимо ввести слово для создания домена 3 уровня ...т.е. как я понимаю шаблон примерно /^[_0-9a-zA-Z-]+/
А вот как дальше быть не понятно.
Думал повешать на OnkeyPress

$('#domain').keypress(function(e){
        var keychar;
        var charcheck = /^[_0-9a-zA-Z-]+/;
        keychar = String.fromCharCode(e.which);
        if(!charcheck.test(keychar)){
    return false;
}
);


Но тогда не срабатывают спец символы (удаления, обновления итп).

Следующей мысль была проверять строку на шаблон

    $('#domain').keypress(function(e){
        var keychar;
        var charcheck = /^[_0-9a-zA-Z-]+/;
        keychar = String.fromCharCode(e.which);
        var str = $('#domain').val()+keychar;
        result=charcheck.test(str);
        if(!result){
                    return false;
                }
    });


Но тут всегда true даже когда кириллицу нажимаю либо спец символы.
Подскажите что делаю не так?

  Ответить  
 
 автор: Balamut182   (10.05.2009 в 18:11)   письмо автору
 
   для: Piom   (07.05.2009 в 11:12)
 


$('#domain').keypress(function(e){
        var keychar;
        var spec_symbs = new Array(9, 13, 38, 40);
        var charcheck = /^[_0-9a-zA-Z-]$/;
        keychar = String.fromCharCode(e.which);
        if(!charcheck.test(keychar) ) {
                if($.inArray(e.which, spec_symbs) < 0) return false;
       }
}
); 

если функция посаженная на событие возвращает false, то дефолтное событие, которое идет следом за вашим обработчиком не сработает. поэтому важно фильтровать клавиши. дополните массив spec_symbs кодами клавиш, которые должны срабатывать. я тут накидал сколько вспомнил
9 - tab
13 - enter
38 - up
40 - down

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования