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
Форумы портала PHP.SU :: Версия для печати :: Ввод в input-text только латиницы, "-" и "_"
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Ввод в input-text только латиницы, "-" и "_"

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

1. Vinyl - 28 Мая, 2013 - 12:50:23 - перейти к сообщению
Здравствуйте, товарищи.
Напишите плиз мне функцию, которая будет позволять пользователю вводить в 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.
2. LIME - 28 Мая, 2013 - 12:56:10 - перейти к сообщению
наверное пользуешь по onkeypress или типатого?
пользуй по onchange
3. Vinyl - 28 Мая, 2013 - 12:58:07 - перейти к сообщению
LIME пишет:
пользуй по onchange
Вообще не работает
4. IllusionMH - 28 Мая, 2013 - 12:58:38 - перейти к сообщению
Vinyl, событие на onkeydown вешается?
(Добавление)
LIME, onchange сработает только при потере фокуса
5. Vinyl - 28 Мая, 2013 - 13:00:54 - перейти к сообщению
IllusionMH пишет:
событие на onkeydown вешается?
Нет, на onkeyup. Но onkeydown больше одного запрещенного символа не печатает, но один-таки вводится
6. LIME - 28 Мая, 2013 - 13:01:55 - перейти к сообщению
эт да...значит копипаст не побороть?
7. IllusionMH - 28 Мая, 2013 - 13:29:46 - перейти к сообщению
Vinyl, не хватает + в регулярке, чтобы удалять все лишние символы.
CODE (javascript):
скопировать код в буфер обмена
  1. document.getElementById("test").onkeyup = function() {
  2.     this.value = this.value.replace(/[^a-z0-9_-]+/i, '');
  3. };
8. Vinyl - 28 Мая, 2013 - 13:35:17 - перейти к сообщению
IllusionMH, работает, спасибо!
9. LIME - 28 Мая, 2013 - 13:40:49 - перейти к сообщению
как раз + тут совсем никчему))
10. Vinyl - 28 Мая, 2013 - 13:42:32 - перейти к сообщению
Vinyl пишет:
как раз + тут совсем никчему))
Однако, с ним работает при зажатой клавише, без него - нет.
11. LIME - 28 Мая, 2013 - 13:55:43 - перейти к сообщению
да...кстати почему интересно
оно 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 не нажмется
(Добавление)
тьфу...бэкспэйс
12. IllusionMH - 28 Мая, 2013 - 13:59:52 - перейти к сообщению
LIME, вот как-то так пробовал, но почему-то пролетал с клавишами модификаторами или бэкспейсом. Времени не много было - запилил первый рабочий вариант.
Нужно будет потом глянуть где я накосячил в своих попытках
13. armancho7777777 - 28 Мая, 2013 - 14:56:04 - перейти к сообщению
LIME пишет:
нужен для FF

Суть ни в этом.
Точнее, не только в этом.
Недавно в опере у меня на ноуте код этой клавиши при использовании onkeypress не определялся, а у клиента (тоже в опере) наоборот.
Я так понял - дело в клавиатуре вообще.
14. Vinyl - 28 Мая, 2013 - 16:28:08 - перейти к сообщению
LIME, отлично, спасибищще!
15. LIME - 28 Мая, 2013 - 17:09:20 - перейти к сообщению
armancho7777777 пишет:
Я так понял - дело в клавиатуре вообще
точно нет
клавиатура только загоняет нажатые коды в буфер клавиатуры
кстать когда удерживаешь клавишу долго и слышен писк то это именно сигнал его переполнения
тут дело только может быть в версии браузера и ОС
то есть считает ли браузер бэкспэйс и тд введенным символом(что конечно глупо)

 

Powered by ExBB FM 1.0 RC1