HTML-валидатор выдает мне ошибку при вводе типа формы, элемент не разрешен в контексте

StackOverflow https://stackoverflow.com/questions/484614

  •  20-08-2019
  •  | 
  •  

Вопрос

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

<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 типа элементов: встроенные и блочные элементы.Одна из возможных причин этого сообщения заключается в том, что вы попытались поместить элемент уровня блока (например, "<p>" или "<table>") внутри встроенного элемента (такого как "<a>", "<span>" или "<font>").

В следующем примере <font> тег является встроенным тегом, который может содержать только другие встроенные теги.Но тег <p> является блочным тегом.Таким образом, <p> тег не может содержаться в <font> теге.

Это блок 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>
Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

[/код]

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

тег

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

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

Отметка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top