Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ввод в input-text только латиницы, "-" и "_"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Vinyl
Отправлено: 28 Мая, 2013 - 12:50:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




Здравствуйте, товарищи.
Напишите плиз мне функцию, которая будет позволять пользователю вводить в input type-text только латиницу, "-" и "_" , т.е. , если пользователь вводит не 'a-z-_', символы просто не набираются. Не нужно никаких предупреждений, действий, или ещё чего-то, надо тупо не допустить ввод неразрешенных символов.

Гуглил, но ничего кроме

CODE (javascript):
скопировать код в буфер обмена
  1. function checkLetter(input) {
  2.     var value = input.value;
  3.     var rep = /[^a-z-_]/;
  4.     if (rep.test(value)) {
  5.         value = value.replace(rep, '');
  6.         input.value = value;
  7.     }
  8. }


не нашел, а это работает криво, если клавишу зажать, то все равно символы проходят, или CTRL+C -> CTRL+V.


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 28 Мая, 2013 - 12:56:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




наверное пользуешь по onkeypress или типатого?
пользуй по onchange
 
 Top
Vinyl
Отправлено: 28 Мая, 2013 - 12:58:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




LIME пишет:
пользуй по onchange
Вообще не работает


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
IllusionMH
Отправлено: 28 Мая, 2013 - 12:58:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Vinyl, событие на onkeydown вешается?
(Добавление)
LIME, onchange сработает только при потере фокуса
 
 Top
Vinyl
Отправлено: 28 Мая, 2013 - 13:00:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




IllusionMH пишет:
событие на onkeydown вешается?
Нет, на onkeyup. Но onkeydown больше одного запрещенного символа не печатает, но один-таки вводится


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 28 Мая, 2013 - 13:01:55
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




эт да...значит копипаст не побороть?
 
 Top
IllusionMH
Отправлено: 28 Мая, 2013 - 13:29:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Vinyl, не хватает + в регулярке, чтобы удалять все лишние символы.
CODE (javascript):
скопировать код в буфер обмена
  1. document.getElementById("test").onkeyup = function() {
  2.     this.value = this.value.replace(/[^a-z0-9_-]+/i, '');
  3. };
 
 Top
Vinyl
Отправлено: 28 Мая, 2013 - 13:35:17
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




IllusionMH, работает, спасибо!


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 28 Мая, 2013 - 13:40:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




как раз + тут совсем никчему))
 
 Top
Vinyl
Отправлено: 28 Мая, 2013 - 13:42:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




Vinyl пишет:
как раз + тут совсем никчему))
Однако, с ним работает при зажатой клавише, без него - нет.


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 28 Мая, 2013 - 13:55:43
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




да...кстати почему интересно
оно 1ну замену только делает чтоли???
обратил внимание при проверке что некрасиво работает
успевает нарисовать символы
вот раскопал у себя
CODE (html):
скопировать код в буфер обмена
  1. <input type="text" id="test">
  2. <script>
  3. document.getElementById("test").onkeypress = function(evt) {
  4.     var theEvent = evt || window.event;
  5.         var key = theEvent.keyCode || theEvent.which;
  6.         if (key==8) return true;
  7.         key = String.fromCharCode( key );
  8.         var regex = /[a-zA-Z0-9-_]/;
  9.         if( !regex.test(key) ) {
  10.             theEvent.returnValue = false;
  11.             if(theEvent.preventDefault) theEvent.preventDefault();
  12.         }
  13. };
  14. </script>

(Добавление)
можно изменить проверку на диапазон кодов
побыстрее будет
если надо
(Добавление)
if (key==8) return true;
нужен для FF
иначе и enter не нажмется
(Добавление)
тьфу...бэкспэйс
 
 Top
IllusionMH
Отправлено: 28 Мая, 2013 - 13:59:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




LIME, вот как-то так пробовал, но почему-то пролетал с клавишами модификаторами или бэкспейсом. Времени не много было - запилил первый рабочий вариант.
Нужно будет потом глянуть где я накосячил в своих попытках
 
 Top
armancho7777777 Супермодератор
Отправлено: 28 Мая, 2013 - 14:56:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
нужен для FF

Суть ни в этом.
Точнее, не только в этом.
Недавно в опере у меня на ноуте код этой клавиши при использовании onkeypress не определялся, а у клиента (тоже в опере) наоборот.
Я так понял - дело в клавиатуре вообще.
 
 Top
Vinyl
Отправлено: 28 Мая, 2013 - 16:28:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




LIME, отлично, спасибищще!


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 28 Мая, 2013 - 17:09:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




armancho7777777 пишет:
Я так понял - дело в клавиатуре вообще
точно нет
клавиатура только загоняет нажатые коды в буфер клавиатуры
кстать когда удерживаешь клавишу долго и слышен писк то это именно сигнал его переполнения
тут дело только может быть в версии браузера и ОС
то есть считает ли браузер бэкспэйс и тд введенным символом(что конечно глупо)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB