Salesforce. При выборе опции поле становится видимым и получает обязательные атрибуты. Проблема: поле не становится обязательным. Пример:
function activateField() {
let element = document.getElementById('elemID');
element.style.display = 'block';
element.required = true;
}
Когда такое случается, я часто замечал, что браузер не сразу реагирует на динамическое добавление атрибута. Однажды я добавил небольшую задержку перед проверкой поля, и это помогло - потом required начал работать как надо. Кроме того, иногда помогает простое обновление состояния формы, если вызвать форму для повторного расчёта валидации. Пробуй разные варианты, возможно, что в твоём случае стоит немного подправить логику и тогда всё заработает правильно
Интересно, что у меня тоже иногда возникают проблемы с динамическим изменением атрибутов. Пробовал setAttribute(‘required’, ‘true’) вместо присвоения через свойство? Также можно обновить форму, чтобы браузер учёл изменения. Тебе приходилось сталкиваться с подобным в разных браузерах?
Оказалось, что динамическое изменение атрибута required не всегда запускает пересчет валидации. У меня подобная ситуация решалась вызовом reportValidity() после установки атрибута, что заставляло браузер обновить состояние. Также можно попробовать временно скрыть и снова показать элемент – иногда помогает перерисовка. Разные браузеры могут вести себя по-разному, так что экспериментируй с вызовами обновления.