В ответе, который, по-видимому, здесь больше не предлагается, предлагались вопросы «сроков», хотя и на несколько иную тему. Поэтому я нашел в Google тайм-аут и нашел блог Майка Ранкина с 2005 года, который позволил мне решить проблему, изменив focus () на:
var t= setTimeout('document.getElementById("seminar_donation").focus()',1);
Итак, что происходит, Firefox все еще переходит к следующему полю, но спустя 1 мс этот код возвращает фокус ошибочному полю. Это глупо, потому что если в следующем поле есть событие облура, то onblur сработает, когда тайм-аут заставит фокус вернуться назад. Но это обходной путь для явно давней ошибки в Firefox.