В начале определяется метод для массива indexOf(возвращает позицию элемента который мы ищем), по сути является фиксом для ie8-
далее на нажатие клавиши в input прикрепляется функция validate
e = e || event
не все браузеры добавляют аргумент к функции поэтому берем e, иначе event
e.charCode || e.keyCode берем код клавиши по аналогичному методу
String.fromCharCode превращаем в элементарную строку
/[a-z0-9]/i.test () проверяем вхождение символов 0-9 и a-z
иначе
!!(!e.charCode && ~[8,37,39,46].indexOf(e.keyCode))
если нет charCode и Keycode не в массиве [8,37,39,46]
обрабатывает клавиши (Backspace,left arrow,right arrow,delete)