HTML Validator выдает ошибку в типе ввода формы, элемент не разрешен в контексте - PullRequest
1 голос
/ 27 января 2009

Это код, который у меня есть, когда HTML Validator выдает ошибку:

<input type="text" id="search" name="keywords" />
<input type="submit" value="Search" name="Submit" />

Вот снимок экрана ошибки в HTML Validator ( полный размер ):

Screen shot of error in HTML Validator.

Это сообщение об ошибке, которое я получаю:

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

В теле HTML-файла есть 2 типа элементов: встроенные и блочные элементы. Одной из возможных причин этого сообщения является попытка поместить элемент уровня блока (например, "

" или "

Это блок html, из которого он получен:

<li>
    <form method="post" action="http://site.com/"  >
    <div class='hiddenFields'>
        <input type="hidden" name="ACT" value="19" />
        <input type="hidden" name="XID" value="90ee0994104d8ba87b6ef9b43e998fc8c89e0d9f" />
        <input type="hidden" name="RP" value="search/results" />
        <input type="hidden" name="NRP" value="" />
        <input type="hidden" name="RES" value="" />
        <input type="hidden" name="status" value="" />
        <input type="hidden" name="weblog" value="forms|alumni_distinguished|housing_faq|international_faq" />
        <input type="hidden" name="search_in" value="everywhere" />
        <input type="hidden" name="where" value="all" />
        <input type="hidden" name="site_id" value="1" />
    </div>

    <input type="text" id="search" name="keywords" /> <input type="submit" value="Search" name="Submit" />
    </form>
</li>

Ответы [ 6 ]

10 голосов
/ 27 января 2009

В HTML4 / XHTML1 нельзя вставить встроенный контент непосредственно в элемент form. HTML5, с другой стороны, снимает это требование.

Таким образом, если ошибка проверки вас беспокоит (есть худшие вещи ...), добавьте элемент p или div вокруг последних двух input с.

1 голос
/ 27 января 2009

Вы не упомянули, с какой версией HTML проверяется этот валидатор. Предполагая, что это не XTHML, входной тег не должен быть закрыт. Использование «/>» подразумевает, что вы предоставляете закрывающий тег.

Для получения дополнительной информации: Ссылка

Однако это ограничение не будет действовать для XHTML, который требует, чтобы все теги были закрыты. (или, может быть, я должен сказать, что ограничение на закрытие всех тегов применяется только в XHTML); -)

0 голосов
/ 16 апреля 2009

например. [Код]

[/ Код]

оберните входной тег в

тег

и обязательно закройте входной тег, как указано выше.

Это должно подтвердить.

Mark

0 голосов
/ 27 января 2009

Есть ли незамеченный встроенный элемент перед кодом, который вы указали? Список встроенных элементов: http://htmlhelp.com/reference/html40/inline.html (для html4)

0 голосов
/ 27 января 2009

Используете ли вы HTML или XHTML

В HTML тег <input> не имеет конца тег.

В XHTML тег <input> должен быть правильно закрыт.

http://www.w3schools.com/tags/tag_input.asp

0 голосов
/ 27 января 2009

Я считаю, что проблема заключается в том, что входы находятся в элементе <li>, который по умолчанию не является элементом уровня блока . Это обычно является причиной таких ошибок вне контекста. Это не повредит вашей странице, но только не допустит проверки.

...