1)В строках (1), (2) и (3) мне не понятно почему в onkeydown на документе записывается null?
Конкретно в строке (1) document.onkeydown присваивают null для того чтобы, браузер больше не обрабатывал данный код:
document.onkeydown = function (e) {
if (e.keyCode == 27) { // escape
complete(null);
}
};
тем самым не давая вызвать функцию complete по нажатию на escape повторно.
игнорируя промежуточный 2й элемент
Второй элемент игнорируется из-за того что обрабатывать его нет нужды, так как фокус на нем будет в любом случае. Обработчик на первый элемент формы нужен для того чтобы по нажатию на shift + tab можно было перейти на последний элемент формы, а обработчик на последний элемент формы нужен для того чтобы по нажатию на tab можно было перейти на 1 элемент.