Oscillococcinum, дополню тут на ответ в личку. Если еще не понятно почему .addEventListener null, то обратите внимание, что мой js-код расположен после формы, то есть на момент его выполнения форма доступна. Если вы подключаете скрипт в шапке страницы, то устанавливать обработчик нужно
по событию загрузки документа, в его обработчике.
Еще нужно учитывать, что вот такое [...e.currentTarget.elements] поддерживают не все браузеры, могут быть проблемы. А применено это здесь ради методов .slice() и .forEach(). Последний можно заменить на цикл for, он позволяет обойти коллекцию, которыми являются e.currentTarget.elements и elm[prt].options. Для обхода первой коллекции счетчик итерации начинать с 1, и .slice() не потребуется.