Question

Toutes les idées pour lesquelles cela ne sera pas validé ici:

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

Il semble que les balises d’entrée de formulaire soient fausses, mais si vous lisez les spécifications XHTML, elles doivent valider. Des idées?

<!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>
Était-ce utile?

La solution

Vous devez vous déplacer

<div class="Controls">

afin qu'il soit à l'intérieur de la balise < form

Ceci valide bien

<!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>

Autres conseils

Essayez de placer une balise fieldset autour des entrées. Je pense que l’idée des formulaires en XHTML est qu’ils ne peuvent pas avoir de descendants directs qui ne sont pas divs, fieldset, etc.

Comme quelqu'un d'autre l'a dit:

[citation] Le validateur vous dit que votre élément d'entrée masqué ne peut pas suivre immédiatement la balise de formulaire - il doit avoir un élément conteneur quelconque. [/ quote]

( Source )

Je suppose qu'un fieldset pourrait aider; Voir La 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">

Aucune entrée pour vous: (

J'ai eu le même problème et il m'a fallu du temps pour comprendre. Est-ce un changement récent avec le validateur W3C? je suis sûr que certaines de mes pages avec des formulaires validés dans le passé, mais maintenant, elles semblent toutes traverser des erreurs pour le même problème.

Je faisais toujours quelque chose comme:

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

et obtenez des erreurs de validation, alors maintenant, je viens d'ajouter FieldSet ou Div autour de toutes les étiquettes et entrées pour le valider, comme ceci:

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

semble fonctionner, mais je suis sûr que je n'avais pas à le faire par le passé ... hmmm?

<!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>

Placez votre div dans votre formulaire.

Vos éléments d’entrée doivent figurer dans un ensemble de champs. Cela valide et présente l’avantage supplémentaire de rendre le document plus accessible aux agents utilisateurs non visuels.

En passant, votre balisage souffre un peu de divitis . Vous pouvez placer directement des classes sur les cellules d'un tableau plutôt que d'y imbriquer des éléments div (je ne ferai pas de commentaire sur l'utilisation des tableaux pour la présentation). Vous pouvez également appeler directement l'élément de formulaire au lieu de l'imbriquer dans une division.

Quoi qu'il en soit, voici votre exemple avec un jeu de champs ajouté pour qu'il valide:

<!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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top