Почему поле заполнено, но срабатывает required?
проблема в том, что ты не сбрасываешь состояние инвалидности, у тебя срабатывает oninvalid когда что-то не так, а когда все верно никакого хэндлера нет
грубо говоря нужно что-то похожее на onvalid
Я так понимаю проблема кроется не в том, что поле заполнено, а в том, что оно не соответствует классу (т.е форме контакта). Возможно, ошибка в формате ввода значения.