Я работаю с подпрограммой JavaScript, которую не писал. Он вызывается из атрибута onkeydown
текстового поля для предотвращения нежелательных нажатий клавиш.
Первый аргумент, по-видимому, не используется. Второй аргумент — это список разрешенных символов.
function RestrictChars(evt, chars) {
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27))
// Control key
return true;
else if (((chars).indexOf(keychar) > -1))
return true;
else
return false;
}
Кажется, это работает для буквенно-цифровых символов. Однако такие символы, как .
и /
, заставляют эту функцию возвращать false
, даже если эти символы включены в параметр chars
. Например, если нажата клавиша .
, key
устанавливается на 190, а keychar
устанавливается на символ «3/4».
Может ли кто-нибудь увидеть, как это должно было работать и / или почему это не так? Я недостаточно знаю JavaScript, чтобы понять, что он пытается сделать.