Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Добавить код в скрипт


Автор: s0lman 10.1.2008, 20:08
Суть в чем. Запретил ввод пользователю латинского тескта. использовал две функции
Код

function checKirNum(e, id){keypressCharFilter(e, "0123456789абвгдеёєжзиіїйклмнопрстуфхцчшщэюяьъАБВГДЕЁЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЭЮЯЬЪ .,-'");} //разрешенные символы для ввода
 
Код

function keypressCharFilter(e,allowedChars)   //функция-обработчик
{
 if (!e) e = event;
 var charCode = typeof(e.charCode)=='number'?e.charCode:e.keyCode;
 if (charCode && allowedChars.indexOf(String.fromCharCode(charCode))==-1)
(e.preventDefault && e.preventDefault()) || (e.returnValue = false);
}

Задача. В функцию keypressCharFilter (если честно, я не понимаю принципа ее действия) нужно добавить код, котрый в случае,если вводится недопустимый символ (напр s),вполнить действие, напр alert("Переключи раскладку").  
Спасибо

Автор: ksnk 10.1.2008, 20:25
Код

function keypressCharFilter(e,allowedChars)   //функция-обработчик
{
 if (!e) e = event;
 var charCode = typeof(e.charCode)=='number'?e.charCode:e.keyCode;
 if (charCode && allowedChars.indexOf(String.fromCharCode(charCode))==-1){
  (e.preventDefault && e.preventDefault()) || (e.returnValue = false);
  setTimeout("alert('раскладку переключи!!!')",10)
}
}

Автор: s0lman 11.1.2008, 01:09
Спасибо smile Но зачем там задержка?

Добавлено через 5 минут и 23 секунды
и как можно добавить в параметр allowedChars спецсимволы (табуляция, бэкспэйс, ктрл, альт, шифт)?

Автор: ksnk 11.1.2008, 02:21
Цитата(s0lman @  11.1.2008,  01:09 Найти цитируемый пост)
Но зачем там задержка?
 Возможно и не зачем, вот только мне как-то не по себе, когда  в обработчике клавиатуры, до выхода алерты выводят... ;-)

Табуляцию не так уж просто ввести в поле формы. Бекспейс и протчие альты и контролы - соответствующие коды символов нужно знать... 16 - Ctrl,17-Shift 18 - Alt, 8 - backspace... Впрочем, еще не все... Если в alert вставить вот такое - будет более понятно.
Код

  setTimeout("alert('раскладку переключи!!! "+charCode+"')",10)
...

function checKirNum(e, id){keypressCharFilter(e, 
  String.fromCharCode(16, 17,18,8)+ // контрол и протчие альты добавить по вкусу...
"0123456789абвгдеёєжзиіїйклмнопрстуфхцчшщэюяьъАБВГДЕЁЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЭЮЯЬЪ .,-'");} 

Автор: s0lman 13.1.2008, 23:25
ksnk, спасибо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)