Pregunta

Alguna idea de por qué esto no se validará aquí:

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

Parece que las etiquetas de entrada del formulario son incorrectas, pero al leer la especificación XHTML deberían validarse bien.¿Algunas ideas?

<!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>
¿Fue útil?

Solución

Necesitas moverte

<div class="Controls">

para que esté dentro la etiqueta < form


Esto valida muy 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>

Otros consejos

Intente colocar una etiqueta fieldset alrededor de las entradas. Creo que la idea de los formularios en XHTML es que no pueden tener descendientes directos que no sean div, fieldset, etc.

Como alguien más lo expresó:

[cita] El validador le dice que su elemento de entrada oculto no puede seguir inmediatamente la etiqueta del formulario; debe tener un elemento contenedor de algún tipo. [/ quote]

( Fuente )

Supongo que un conjunto de campos podría ayudar; Consulte The XHTML DTD :

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

No hay entrada para ti :(

Tuve el mismo problema y me tomó algún tiempo resolverlo.¿Es este un cambio reciente con el validador w3c?Es solo que estoy seguro de que algunas de mis páginas con formularios se validaron en el pasado, pero ahora todas parecen tener errores por el mismo problema.

Solía ​​hacer siempre algo como:

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

y obtengo errores de validación, así que ahora solo agrego un conjunto de campos o div alrededor de todas las etiquetas y entradas para que se valide, así:

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

Parece funcionar, pero estoy seguro de que no tuve que hacer esto en el pasado...¿mmm?

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

Pon tu div dentro de tu formulario.

Sus elementos de entrada deben estar dentro de un conjunto de campos. Esto valida y tiene el beneficio adicional de hacer que el documento sea más accesible para los agentes de usuario no visuales.

Como comentario aparte, su marcado sufre de divitis un poco. Podría colocar clases en las celdas de la tabla directamente en lugar de anidar elementos div dentro de ellas (no voy a comentar sobre el uso de tablas para el diseño). Además, puede diseñar el elemento de formulario directamente en lugar de anidarlo dentro de un div.

De todos modos, aquí está su ejemplo con un conjunto de campos agregado para que 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top