xhtml input in form

Status
Niet open voor verdere reacties.

stykurgh

Gebruiker
Lid geworden
6 jul 2009
Berichten
715
Hallo,

Ik ben bezig met een site en ik wel daar een formulier op zetten, nou heb ik dit zo gedaan:

Code:
<form method="post" action="">
<input type="text" value="test" />
</form>

doctype is xhtml strict, alleen als ik dit validate dan geeft hij een error. Die luid als volgt:
Code:
document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag

weet iemand wat ik hier aan kan doen?
 
Mischien een beetje flauw, maar, doen wat de validator je aanraad:
HTML:
<form method="post" action="">

   <p>
      <input type="text" value="test" />
   </p>

</form>
Wat natuurlijk ook kan, is een label gebruiken (eh, dat denk ik tenminste..., weet niet zeker of het 'mag' - test het even). Erg handig als je er een naam/text bij wilt:
HTML:
<form method="post" action="">

   <label for='foobar'>
      Voer hier iets in:<input id='foobar' type="text" value="test" />
   </label>

</form>
en dan kan je het gelijk netjes stijlen met CSS (label width van 400px, label input met float right).



:thumb:
 
Laatst bewerkt:
Nou, er zijn, in HTML, 2 typen elementen: inline en block.

  • Inline elementen zijn dingen als <span> en <input>. Deze moeten in een block-element staan. In inline-elementen mag geen block-type element staan, alleen andere inline elementen.
  • Block elementen zijn dingen als <div>, <p> en <pre>. Hierin kan je block- of inline elementen zetten.


Nu, HTML zegt simpelweg dat je in je <body> dus eerst een block-element moet hebben voordat je een inline element neer kan zetten. That's the rule, en als je wilt dat je pagina valideert zul je je aan deze regel moeten houden.

Overgens is het ook redelijk logisch. HTML is een markup taal, ofwel, het gebruikt tags om een bepaalde semantiek aan een document te geven (dus: sommige woorden zijn belangrijker dan anderen, sommige woorden zijn een titel, etcetera) in plaats van 1 groot document met alleen text.

Stel je een boek voor. Dit kan er in HTML zo uitzien:
HTML:
<h1>Titel van het boek</h1>


<h2>Hoofdstuk 1</h2>

<p>
   Dit is de eerste paragraaf. De helden van dit boek liepen het <strong>enge</strong> bos in.
</p>

<p>
   De tweede paragraaf...
</p>

<h2>Hoofdstuk 2</h2>

<!-- ... etc ... -->


[edit]23:42: vond net deze, dus moar leesvoer![/edit]
 
Laatst bewerkt:
oke bedankt ik ga het even doorlezen, en het formulier veranderen.
 
Ik heb het doorgelezen maar ik heb nog 1 vraag, ik heb dat formulier in een div gezet.

dus:

Code:
<div>
<form>
<input ... />
</form>
</div>

maar waarom is dit fout? waarom moeten die inputs nu nog steeds per se in een block element staan?
 
Laatst bewerkt:
Well, om eerlijk te zijn heb ik geen idee. Tenminste, ik kan zo even geen logische reden verzinnen*

Een redelijk leesbare spec is hier te vinden. Onder 'content' zie je de mogelijke elementen in een <form> element:
p | h1 | h2 | h3 | h4 | h5 | h6 | div | ul | ol | dl | pre | hr | blockquote | address | fieldset | table | noscript | ins | del | script
(vond m via hier).


:thumb:





* - het kan zijn omdat een form-element een 'speciaal' element is - het is gelinkt aan input-velden etcetera. Maargoed, niet echt een logische reden ;)
 
Bedankt! Ik heb mijn input nu in een tabel gezet en nu is het wel valid.

Mvg

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan