J'inclus certains formulaires dans un tableau HTML pour ajouter de nouvelles lignes et mettre à jour les lignes actuelles. Le problème que je reçois est que lorsque j'inspecte les formulaires dans mes outils de développement, je vois que les éléments du formulaire sont fermés immédiatement après l'ouverture (les entrées, etc. ne sont pas incluses dans le formulaire).
En tant que tel, l'envoi d'un formulaire n'inclut pas les champs.
La ligne du tableau et les entrées sont les suivantes:
<tr>
<form method="post" action="">
<td>
<input type="text" name="job_num">
</td>
<td>
<input type="text" name="desc">
</td>
</form>
</tr>
Toute aide serait formidable, merci.
html
firebug
html-table
forms
Alex
la source
la source
<form>
ne peut pas être mis à l'intérieur<tr>
.<tr>
.Réponses:
Un formulaire n'est pas autorisé à être un élément enfant d'un
table
,tbody
outr
. Tenter d'en mettre un aura tendance à faire déplacer le formulaire vers le navigateur pour qu'il apparaisse après le tableau (tout en laissant son contenu - lignes du tableau, cellules du tableau, entrées, etc. - derrière).Vous pouvez avoir une table entière dans un formulaire. Vous pouvez avoir un formulaire à l'intérieur d'une cellule de tableau. Vous ne pouvez pas avoir une partie d'une table dans un formulaire.
Utilisez un formulaire autour de la table entière. Utilisez ensuite le bouton Soumettre cliqué pour déterminer la ligne à traiter (pour être rapide) ou traiter chaque ligne (autorisant les mises à jour groupées).
HTML 5 introduit l'
form
attribut . Cela vous permet de fournir un formulaire par ligne en dehors du tableau , puis d'associer tous les contrôles de formulaire d'une ligne donnée à l'un de ces formulaires à l'aide de itsid
.la source
<form>
intérieur des<table>
normes?Utilisez l' attribut "formulaire" , si vous souhaitez enregistrer votre balisage:
(* Champs de formulaire en dehors de la balise <form>)
Voir aussi les 2 premiers commentaires
la source
Si vous voulez une « grille modifiable » soit une table comme la structure qui vous permet de faire l' une des lignes d' une forme, utilisez CSS qui imite la mise en page de la balise TABLE:
display:table
,display:table-row
etdisplay:table-cell
.Il n'est pas nécessaire d'envelopper votre table entière dans un formulaire et pas besoin de créer un formulaire et une table séparés pour chaque ligne apparente de votre table.
Essayez plutôt ceci:
Le problème avec l'encapsulation de la TABLE entière dans un FORMULAIRE est que tous les éléments du formulaire seront envoyés lors de la soumission (peut-être que cela est souhaité mais probablement pas). Cette méthode vous permet de définir un formulaire pour chaque "ligne" et d'envoyer uniquement cette ligne de données lors de la soumission.
Le problème avec enrouler une balise FORM autour d'une balise TR (ou TR autour d'un FORM) est que c'est du HTML non valide. Le FORMULAIRE permettra toujours de soumettre comme d'habitude mais à ce stade le DOM est cassé. Remarque: Essayez d'obtenir les éléments enfants de votre FORM ou TR avec JavaScript, cela peut conduire à des résultats inattendus.
Notez qu'IE7 ne prend pas en charge ces styles de table CSS et IE8 aura besoin d'une déclaration doctype pour le mettre en mode "standard": (essayez celui-ci ou quelque chose d'équivalent)
Tout autre navigateur prenant en charge display: table, display: table-row et display: table-cell doit afficher votre tableau de données css de la même manière que si vous utilisiez les balises TABLE, TR et TD. La plupart d'entre eux le font.
Notez que vous pouvez également imiter THEAD, TBODY, TFOOT en encapsulant vos groupes de lignes dans une autre DIV avec
display: table-header-group
,table-row-group
ettable-footer-group
respectivement.REMARQUE: la seule chose que vous ne pouvez pas faire avec cette méthode est colspan.
Découvrez cette illustration: http://jsfiddle.net/ZRQPP/
la source