Проблема W3C-валидации с перекрывающейся формой и тегами div - PullRequest
1 голос
/ 22 октября 2010

У меня проблемы с проверкой кода с помощью валидатора W3.Проблема с тегом <form>.Мне нужен тег <form> для перекрытия нескольких тегов <div> и <span>, потому что у меня много разных полей ввода и тому подобное, но я также использую Form2 и Form3 с полями ввода и тому подобное, поэтому мне нужно использовать </form> до формы2.Но это вызывает у меня проблемы при проверке, потому что это перекрывающиеся теги <div> и <span>.Что я могу сделать, чтобы проверка работала?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="sv" xml:lang="sv" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Title</title>
  <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />
</head>
<body>
<div id="wrapper">

 <div id="headerwrapper">
  <div class="header alignleft">
   <a href="index.html">Home</a>
  </div>
  <div class="header alignright">
   <div id="searchfield">
   Search
   </div>
  </div>

  <div id="menu">
  Menu
  </div>
 </div>
 <div class="clear"></div>

 <div class="content">
  <div class="box alignleft">

   <div class="boxtop"></div>
   <div class="boxmiddle">

    <form action="links.php" method="post"><input type="hidden" name="edit_page_check" value="yes" />

    <p>
     <span id="page_leftbox">Text</span>
    </p>
   </div>

   <div class="boxbottom"></div>

  </div>
  <div class="column580 alignright">

   <div class="header580">
    <h2>Topic</h2><span class="headerdesc">Text</span>
   </div>
   <p>

    <span id="page_info">Info</span>

   </p>

   </form>
   <br/>
   <div id="addlinkform" style="display: none;">
Form2
   </div>
   <div id="linkform" style="display: none;">
Form3
   </div>
  </div>
 </div>
 <div class="clear"></div>
 <div class="divider800"></div>
 <div id="footer">
Footer text
 </div>
</div>
</body>
</html>

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

XHTML не позволяет перекрывать теги.Например, это неверно:

<div><form></div></form>

То, что вы хотите сделать, это вместо того, чтобы пытаться охватить только те элементы, которые, как вы считаете, находятся в форме, включают теги <input />в форме , а также их контейнеры.Например, ваш код должен выглядеть следующим образом:

 <div class="content">
    <form action="links.php" method="post"><input type="hidden" name="edit_page_check" value="yes" />
  <div class="box alignleft">

   <div class="boxtop"></div>
   <div class="boxmiddle">


    <p>
     <span id="page_leftbox">Text</span>
    </p>
   </div>

   <div class="boxbottom"></div>

  </div>
  <div class="column580 alignright">

   <div class="header580">
    <h2>Topic</h2><span class="headerdesc">Text</span>
   </div>
   <p>

    <span id="page_info">Info</span>

   </p>

   <br/>
   <div id="addlinkform" style="display: none;">
Form2
   </div>
   <div id="linkform" style="display: none;">
Form3
   </div>
   </div>
  </form>
 </div>

Обратите внимание, как элемент формы охватывает ВСЕ контейнеры входных тегов.

0 голосов
/ 22 октября 2010

XML (в данном случае XHTML) должен быть правильно сформирован.Взгляните на это .Вы сможете решить эту проблему, переместив метку <form> в дереве.

Вместо

<div>
    <form action="/some_target" method="post">
        <input/>
</div>
<div>
        <input />
    </form>
</div>

выполните следующее (переместите элемент form вверх,чтобы обернуть входные данные и их контейнеры):

<form action="/some_target" method="post">
    <div>
        <input/>
    </div>
    <div>
        <input />
    </div>
</form>
...