Я унаследовал приложение, в котором display: none использовалось для управления условным отображением элементов ввода на основе значений других элементов ввода.
Это было обработано путем запуска довольно уродливого кода для оценки значений полей и сброса свойства отображения во время загрузки страницы. Каждый раз.
Нет лучшего способа?
При первоначальном создании на странице есть несколько парных входов (т. Е. Есть ли у вас дети? Если да, то сколько?), Которые отображаются динамически. Последовательные чтения страницы вызывают загрузку страницы.






Может быть, вам следует просто переделать форму, которая использует все поля дисплей: нет, или переписать / реорганизовать скрипт, который выполняет эту проверку? Если форма слишком большая, разделите ее на несколько частей - это тоже поможет пользователю. Мне лично не нравится, если форма часто меняется, когда я пытаюсь все заполнить.
Использование display: none в сочетании с JavaScript и CSS - самый простой способ просто показать или скрыть элементы DOM на лету. Тем не менее, вы можете манипулировать самой DOM, добавляя или удаляя элементы, а не просто показывая / скрывая их (например, с помощью jQuery).
Если вы не показываете и не скрываете элементы динамически, когда пользователь взаимодействует с формой, тогда нет необходимости использовать CSS / Javascript. Просто используйте свой серверный язык (PHP / JSP / что угодно), чтобы не выводить скрытые поля. Вы будете использовать меньшую полосу пропускания, и форма будет работать даже с отключенным Javascript.
Есть идея изменять форму формы для каждого POST или изменять порядок полей перед отправкой. Если первое, то показанные поля должны быть удалены на стороне сервера, прежде чем страница попадет к пользователю. Если вы говорите об изменении на стороне клиента перед публикацией (например, удаление полей, которые не имеют отношения к вводу в некоторые поля как типы пользователей), вы можете использовать javascript для удаления полей из DOM.
Вашему решению нужны две вещи:
есть частичная альтернатива для отображения: нет, т.е. используйте этот стиль в css
opacity:0;
но проблема в том, что он не отображается на холсте, но все еще там. с использованием дисплея: нет; полностью удалить элемент и создать при применении атрибута display: block;
Или visibility: hidden. mdn
Я не понимаю. Не могли бы вы описать жизненный цикл своей страницы? элементы ввода отображаются / скрываются ТОЛЬКО во время загрузки страницы, или они делают это динамически, когда пользователь выбирает элементы со страницы?