Jak wyświetlić HTML <FORM> jako element wbudowany?


83

To prawdopodobnie podstawowe pytanie html / css ...

Mam prosty formularz jednoprzyciskowy, który chciałbym wyświetlić w tekście akapitowym.

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

Mimo że formularz ma atrybut style = display: inline, przed formularzem pojawia się podział wiersza. Czy jest sposób, aby się go pozbyć?

Czy elementy formy mogą pojawić się wewnątrz <p>?


3
Dziękuję wszystkim za odpowiedzi i komentarze!
Evgeny

Odpowiedzi:


73

Przenieś swój znacznik formularza poza akapit i ustaw marginesy / dopełnienie na zero:

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

Twoja odpowiedź uratowała mi dzień.
DrinkJavaCodeJava

3
Margines i dopełnienie w moim formularzu nie działały, musiałem zamiast tego użyć display: inline, a wtedy margines / dopełnienie nie było konieczne.
angularsen,

2
display: inline też to zrobił dla mnie. Dlaczego nie dodać tego do stylu formularza w odpowiedzi.
Praesagus

też mnie uratował! Boże, zmarnowane 2 godziny i jedyne, co musiałem zrobić, to przesunąć akapity poza wejście. Chciałbym wiedzieć, dlaczego to działa, ale dzięki Bogu działa.
rewolwerowiec

54

<form>nie mogę wejść do środka <p>, nie. Przeglądarka nagle zamknie Twój <p>element, gdy trafi w otwierający <form>znacznik, próbując obsłużyć to, co uważa za niezamknięty element akapitu:

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

22

Możesz wypróbować ten kod:

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

Ważną rzeczą, na którą należy zwrócić uwagę, jest właściwość stylu css w <form>tagu.

display:inline!important;


6

Według HTML wyspecjalizoway obu <form>i <p>są elementy blokowe i im nie można zagnieżdżać. Może zastępując <p>ze <span>będzie pracować dla Ciebie?

EDYCJA: Przepraszamy. Byłem zbyt szybki w sformułowaniu. <p>Elementu nie pozwala na zawartość bloków w - określony przez HTML spec ust .


3
Niektóre elementy blokowe mogą być zagnieżdżane (np. Elementy DIV), ale niektóre są specjalne i nie powinny być zagnieżdżane. Na przykład znacznik akapitu może zawierać tylko elementy wbudowane.
Zack The Human,

0

Myślę, że możesz osiągnąć to, co chcesz, po prostu umieszczając przycisk przesyłania w akapicie:

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

0

Po prostu użyj stylu float: leftw ten sposób:

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

3
Lepiej jest naprawić znaczniki, jak sugerowano w innych odpowiedziach, niż robić floatsztuczki.
Jeremy J Starcher

0

Dodaj otokę wbudowaną.

<div style='display:flex'>
<form>
 <p>Read this sentence</p>
 <input type='submit' value='or push this button' />
</form>
<div>
    <p>Message here</p>
</div>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.