Есть ли альтернатива условному отображению: нет

Я унаследовал приложение, в котором display: none использовалось для управления условным отображением элементов ввода на основе значений других элементов ввода.

Это было обработано путем запуска довольно уродливого кода для оценки значений полей и сброса свойства отображения во время загрузки страницы. Каждый раз.

Нет лучшего способа?

Я не понимаю. Не могли бы вы описать жизненный цикл своей страницы? элементы ввода отображаются / скрываются ТОЛЬКО во время загрузки страницы, или они делают это динамически, когда пользователь выбирает элементы со страницы?

Kolten 27.09.2008 00:35

При первоначальном создании на странице есть несколько парных входов (т. Е. Есть ли у вас дети? Если да, то сколько?), Которые отображаются динамически. Последовательные чтения страницы вызывают загрузку страницы.

david dickey 27.09.2008 01:02
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
2
4 225
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Может быть, вам следует просто переделать форму, которая использует все поля дисплей: нет, или переписать / реорганизовать скрипт, который выполняет эту проверку? Если форма слишком большая, разделите ее на несколько частей - это тоже поможет пользователю. Мне лично не нравится, если форма часто меняется, когда я пытаюсь все заполнить.

Ответ принят как подходящий

Использование display: none в сочетании с JavaScript и CSS - самый простой способ просто показать или скрыть элементы DOM на лету. Тем не менее, вы можете манипулировать самой DOM, добавляя или удаляя элементы, а не просто показывая / скрывая их (например, с помощью jQuery).

Если вы не показываете и не скрываете элементы динамически, когда пользователь взаимодействует с формой, тогда нет необходимости использовать CSS / Javascript. Просто используйте свой серверный язык (PHP / JSP / что угодно), чтобы не выводить скрытые поля. Вы будете использовать меньшую полосу пропускания, и форма будет работать даже с отключенным Javascript.

Есть идея изменять форму формы для каждого POST или изменять порядок полей перед отправкой. Если первое, то показанные поля должны быть удалены на стороне сервера, прежде чем страница попадет к пользователю. Если вы говорите об изменении на стороне клиента перед публикацией (например, удаление полей, которые не имеют отношения к вводу в некоторые поля как типы пользователей), вы можете использовать javascript для удаления полей из DOM.

Вашему решению нужны две вещи:

  1. Формы должны быть функциональными без javascript (даже если они кажутся менее привлекательными).
  2. Не отправляйте поля, которые пользователь не может видеть, если они не являются тегами ввода с type = "hidden". Вы только запутаете себя на бэкэнде, если не знаете, оставил ли пользователь поле пустым или не мог его видеть, потому что его стиль динамически изменялся с помощью клиентского скрипта.

есть частичная альтернатива для отображения: нет, т.е. используйте этот стиль в css

opacity:0;

но проблема в том, что он не отображается на холсте, но все еще там. с использованием дисплея: нет; полностью удалить элемент и создать при применении атрибута display: block;

Или visibility: hidden. mdn

beatgammit 22.03.2013 11:31

Другие вопросы по теме