2009-07-09 5 views
78

Il s'agit probablement d'une question de base html/css ...Comment afficher le code HTML <FORM> en tant qu'élément en ligne?

J'ai un simple formulaire à un bouton que je voudrais afficher en ligne dans le texte du paragraphe.

<p>Read this sentence 
    <form style='display:inline;'> 
    <input style='display:inline;' 
      type='submit' 
      value='or push this button'/> 
    </form>. 
</p> 

Même si la forme a l'attribut style = display: inline, j'obtiens un retour à la ligne avant le formulaire. y a-t-il un moyen de s'en débarrasser?

Des éléments de formulaire peuvent-ils apparaître à l'intérieur de <p>?

+3

Merci à tous pour les réponses et commentaires! – Evgeny

Répondre

69

Déplacez votre balise de formulaire juste en dehors du paragraphe et définir les marges/padding à zéro:

<form style="margin: 0; padding: 0;"> 
    <p> 
    Read this sentence 
    <input style="display: inline;" type="submit" value="or push this button" /> 
    </p> 
</form> 
+0

Votre réponse a sauvé ma journée. – DrinkJavaCodeJava

+2

Marge et rembourrage dans ma forme ne fonctionnait pas pour moi, je devais utiliser l'affichage: en ligne à la place, puis marge/rembourrage n'était pas nécessaire. – angularsen

+2

affichage: inline l'a fait pour moi aussi. Pourquoi ne pas ajouter cela au style de formulaire dans votre réponse. – Praesagus

50

<form> ne peut pas entrer <p>, no. Le navigateur va fermer brusquement votre élément <p> quand il frappe la balise d'ouverture <form> comme il essaie de gérer ce qu'il pense est un élément de paragraphe non fermé:

<p>Read this sentence 
</p><form style='display:inline;'> 
6

Selon HTML spec deux <form> et <p> sont des éléments de bloc et vous ne pouvez pas imbriquer. Peut-être remplacer le <p> avec <span> fonctionnerait pour vous?

EDIT: Désolé. Je devais rapidement dans ma formulation. L'élément <p> n'autorise aucun contenu de bloc à l'intérieur - comme spécifié par HTML spec for paragraphs.

+2

Certains éléments de bloc peuvent être imbriqués (comme éléments div), mais certains sont spéciaux et ne doivent pas être imbriquées. La balise de paragraphe, par exemple, ne peut contenir que des éléments en ligne. –

18

Vous pouvez essayer ce code:

<form action="#" method="get" id="login" style=" display:inline!important;"> 

    <label for='User'>User:</label> 
    <input type='text' name='User' id='User'> 

    <label for='password'>Password:</label><input type='password' name='password' id='password'> 
    <input type="submit" name="log" id="log" class="botton" value="Login" /> 

</form> 

La chose importante à noter est la propriété de style CSS dans la balise <form>.

display:inline!important;

+2

c'est la seule réponse ici qui fonctionne! – Aris

0

Vous pouvez accomplir ce que vous voulez, je pense, tout simplement en incluant le bouton soumettre dans le paragraphe:

 <pre> 
    <p>Read this sentence <input type='submit' value='or push this button'/></p> 
    </pre> 
0

Il suffit d'utiliser le style float: left ainsi:

<p style="float: left"> Lorem Ipsum </p> 
<form style="float: left"> 
    <input type='submit'/> 
</form> 
<p style="float: left"> Lorem Ipsum </p> 
+3

Il est préférable de fixer le balisage comme suggéré dans d'autres réponses que faire des tours 'float'. –

Questions connexes