Вопрос

Есть идеи, почему это не будет проверено здесь:

http://validator.w3.org/#validate_by_input

Кажется, что теги ввода формы неверны, но при чтении спецификации XHTML они должны быть проверены нормально.Есть какие-нибудь идеи?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Test</title>
 </head>

 <body>
    <div class="Header">
        <table class="HeaderTable">
            <tr>
                <td>
                    <div class="Heading">Test <span class="Standard">Test</span>
                    </div>
                </td>
                <td>
                    <div class="Controls">
                        <form id="ControlForm" method="get" action="Edit.php">
                            <input type="submit" name="action" id="Edit" value="Edit" />
                            <input type="submit" name="action" id="New" value="New" />
                        </form>
                    </div>
                </td>
            </tr>
        </table>
    </div>
 </body>
</html>
Это было полезно?

Решение

Вам нужно переехать

<div class="Controls">

чтобы находился внутри тега < form

<Ч>

Это хорошо подтверждает

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test</title>
</head>

<body>
    <div class="Header">
        <table class="HeaderTable">
        <tr>
            <td>
                <div class="Heading">Test <span class="Standard">Test</span></div>
            </td>
            <td>
                <form id="ControlForm" method="get" action="Edit.php">
                    <div class="Controls">
                        <input type="submit" name="action" id="Edit" value="Edit" />
                        <input type="submit" name="action" id="New" value="New" />
                    </div>
                </form>
            </td>
        </tr>
        </table>
    </div>
</body>
</html>

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

Попробуйте разместить тег fieldset вокруг входов. Я думаю, что идея форм в XHTML заключается в том, что они не могут иметь прямых потомков, которые не являются div, fieldset и т. Д.

Как выразился кто - то другой:

[цитата] Валидатор сообщает вам, что ваш скрытый элемент ввода не может сразу следовать за тегом формы - у него должен быть какой-то элемент контейнера.[/цитата]

(Источник)

Я думаю, набор полей мог бы помочь;Видишь DTD в формате XHTML:

<!ELEMENT form %form.content;>

<!ENTITY % form.content "(%block; | %misc;)*">

<!ENTITY % misc "noscript | %misc.inline;">
<!ENTITY % misc.inline "ins | del | script">

<!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">

<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">

Никаких данных для вас :(

У меня была точно такая же проблема, и мне потребовалось некоторое время, чтобы разобраться.Это недавнее изменение в валидаторе w3c?просто я уверен, что некоторые из моих страниц с формами проверялись в прошлом, но теперь все они, похоже, выдают ошибки из-за одной и той же проблемы.

Раньше я всегда делал что-то вроде:

<div>
<form>
    <label></label>
    <input />
    <label></label>
    <input />
    <label></label>
    <input />
</form>

и получаю ошибки проверки, поэтому теперь я просто добавляю fieldset или div вокруг всех меток и входных данных, чтобы получить их для проверки, вот так:

<div>
<form>
    <fieldset>or<div>
        <label></label>
        <input />
        <label></label>
        <input />
        <label></label>
        <input />
    </fieldset>or</div>
</form>

Кажется, работает, но я уверен, что в прошлом мне не приходилось этого делать...хммм?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Test</title>
 </head>

 <body>
    <div class="Header">
        <table class="HeaderTable">
                <tr>
                        <td>
                                <div class="Heading">Test <span class="Standard">Test</span>
                                </div>
                        </td>
                        <td>

                            <form id="ControlForm" method="get" action="Edit.php">
                                <div class="Controls">
                                                <input type="submit" name="action" id="Edit" value="Edit" />
                                                <input type="submit" name="action" id="New" value="New" />
                                </div>
                            </form>

                        </td>
                </tr>
        </table>
    </div>
 </body>
</html>

Поместите свой div в форму.

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

Кроме того, ваша разметка немного страдает от divitis . Вы можете поместить классы в ячейки таблицы напрямую, а не вкладывать в них элементы div (я не буду комментировать использование таблиц для разметки). Кроме того, вы можете стилизовать элемент формы напрямую, а не вкладывать его в элемент div.

В любом случае, вот ваш пример с добавленным набором полей, поэтому он проверяется:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Test</title>
  </head>
  <body>
    <div class="Header">
      <table class="HeaderTable">
        <tr>
          <td>
            <div class="Heading">Test <span class="Standard">Test</span></div>
          </td>
          <td>
            <div class="Controls">
              <form id="ControlForm" method="get" action="Edit.php">
                <fieldset>
                  <input type="submit" name="action" id="Edit" value="Edit" />
                  <input type="submit" name="action" id="New" value="New" />
                </fieldset>
              </form>
            </div>
          </td>
        </tr>
      </table>
    </div>
  </body>
</html>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top