Правильно ли я делаю цикличную проверку полей?
Откуда Вы взяли такой уродливый код?
Вот посмотрите как вариант на это codepen.io/bingo347/pen/ZWyxGb
Попробуй отслеживание ввода текста, только не работает с автозаполнением и копи-пастом, для этого нужен скрипт, для комплекса событий
https://learn.javascript.ru/keyboard-events