Действительно ли необходимо поместить ВХОДНЫЕ элементы в элемент DIV?

Почему это дает ошибку в проверке W3c html? Я использую HTML 4.01 Строгий doctype.

<form method="get" action="/search" id="search">

   <input type="text" value="search" maxlength="80" class="textbox" >

</form>

и это не делает?

  <form method="get" action="/search" id="search">
    <div>
       <input type="text" value="search" maxlength="80" class="textbox" >
    </div>
  </form>

Это - ошибка

тип документа не позволяет "ВХОД" элемента здесь; пропуская один из "P", "H1", "H2", "H3", "H-4", "H5", "H6", "ПРЕД", "DIV", "ОБРАЩАЮТСЯ" к начинать-тегу

Действительно ли необходимо поместить input в a div?

6
задан Charles 29 October 2012 в 16:32
поделиться

3 ответа

Нет, потому что вы должны предположить, что любой злоумышленник имеет доступ к всему вашу базу исходного кода, поэтому называя их что-то другое, не снизит их способность атаковать вас.

Правильный способ защиты заявления - это правильно написать, не скрывать информацию, которую кому-то может потребоваться атаковать (они могут все равно получить).

-121--5044676-

Официальная причина заключается в том, что в HTML4 строгих элементов формы могут содержать только элементы , но элементы блоков в свою очередь могут содержать входные данные формы. Следовательно, структура Форма-> блок-элемент-> ввод формы - это то, что нужно использовать.

Я не могу найти серьезную причину, почему это так. Похоже, что авторы HTML не хотели разрешать формы, которые запускаются на одной строке, затем обертываются на следующую строку, а затем иметь кнопку отправки где-то на третьей строке (которую вы все еще можете достичь, переопределения дисплея Свойство формы, если вам нужно. Например, Эта статья на 24 места только говорит, что «это разница между переходными и строгими стандартами».

Еще одно сравнение Они говорят о XHTML VS HTML, но идея такая же):

в XHTML, элементы должны быть закодированы в семантическом порядке. Столы и формы не может быть включен в пункты, но Форма элементов, будучи встроенным элементам, необходимо содержаться в семантической элемент уровня блока , например, абзац или таблица ячейки.

Это заставляет меня думать, что элемент формы не является «достаточно семантическим», чтобы содержать другие элементы. Он обычно не предназначен для использования для размещения вашего кода, он больше похож на технический элемент, который показывает, где опубликовать данные. Следовательно, это технически является блочным элементом, но ему необходимо нечто более «семантическое», чтобы содержать фактические поля ввода.

1
ответ дан 17 December 2019 в 00:09
поделиться
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

Форма может содержать блок элемент (за исключением другой формы) или элемент сценария.

Вход не является блочным элементом, но большинство блочных элементов могут содержать встроенные элементы, которые включают входы.

3
ответ дан 17 December 2019 в 00:09
поделиться

Со строгой проверкой вам нужен элемент блока вокруг ваших полей ввода; Лучшим выбором здесь будет

.

3
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: