luti: Formular & Absatz (DOM)

Hallo,

ich bin gerade etwas am Verzweifeln ... Ich bastle an einer Google-Maps Anwendung, in der per GDownloadUrl ein durch PHP generiertes XML-Dokument in die Karte eingebunden wird. Die XML-Informationen verarbeite ich dann in JavaScript weiter und gebe nach einigen Abfragen schließlich den Inhalt in einer Sidebar aus. Dabei wird je nach Fallunterscheidung dynamisch folgender Code erzeugt:

  
<p class="hervorheben">  
  text  
  <form action="..." style="display: inline;" method="post">  
    <input value=" Anfrage stellen " type="submit" />  
  </form>  
</p>  

Im JavaScript-Teil ist dieser Code noch korrekt, beim Parsen nach HTML wird der Code dann aber irgendwann verändert in:

  
<p class="hervorheben">  
  text  
</p>  
<form action="..." style="display: inline;" method="post">  
  <input value=" Anfrage stellen " type="submit" />  
</form>  

Lässt sich das irgendwie vermeiden? Ist es nicht zulässig, ein Formular in einen Absatz einzubinden???

Dank & Gruß,
luti

  1. Kannst Du den Form-Tag nicht ausserhalb Deines p-Tags gestallten?

    aus...

    <p class="hervorheben">
      text
    </p>
    <form action="..." style="display: inline;" method="post">
      <input value=" Anfrage stellen " type="submit" />
    </form>

    wird dann...
    <form action="..." style="display: inline;" method="post">
    <p class="hervorheben">text</p>
    <input value=" Anfrage stellen " type="submit" />
    </form>

    1. Hallo Nick,

      Kannst Du den Form-Tag nicht ausserhalb Deines p-Tags gestallten?

      Leider nicht: Der Aufbau ist ziemlich verwoben und so wird der Absatz samt Klasse erst im JavaScript erzeugt, das Formular aber schon im XML-Dokument. Ansonsten müsste ich das ganze Skript umstellen und deutlich mehr Daten über den XML-Request senden, das möchte ich gerne vermeiden.

      Trotzdem danke!

      luti

  2. Hi,

    <p class="hervorheben">

    text
      <form action="..." style="display: inline;" method="post">
        <input value=" Anfrage stellen " type="submit" />
      </form>
    </p>

      
    das ist ungültiges HTML.  
      
    
    > Ist es nicht zulässig, ein Formular in einen Absatz einzubinden???  
      
    Genau das. Ein Absatz (p-Element) darf nur Inline-Elemente enthalten. Daher wird ein validierender Parser das noch geöffnete p-Element vor dem Formular implizit schließen.  
      
    So long,  
     Martin  
    
    -- 
    You say, it cannot be love if it isn't for ever.  
    But let me tell you: Sometimes, a single scene can be more to remember than the whole play.
    
    1. Hallo,

      das ist ungültiges HTML.

      Urgh.

      Genau das. Ein Absatz (p-Element) darf nur Inline-Elemente enthalten. Daher wird ein validierender Parser das noch geöffnete p-Element vor dem Formular implizit schließen.

      Die Angabe "display: inline;" macht das Form-Element also nicht zu einem _echten_ Inline-Element?

      Dank & Gruß,
      luti

      1. Hi,

        Die Angabe "display: inline;" macht das Form-Element also nicht zu einem _echten_ Inline-Element?

        nein, CSS hat einen Einfluss auf die Art der Darstellung, aber nicht auf die Syntaxregeln von HTML. Du kannst einen Abfalleimer postgelb anmalen; er wird dadurch aber nicht zum Briefkasten, auch wenn er so aussieht.

        Ciao,
         Martin

        --
        F: Was ist schneller: Das Licht oder der Schall?
        A: Offensichtlich der Schall. Wenn man den Fernseher einschaltet, kommt immer erst der Ton, und dann erst das Bild.
        1. Hallo Martin,

          nein, CSS hat einen Einfluss auf die Art der Darstellung, aber nicht auf die Syntaxregeln von HTML. Du kannst einen Abfalleimer postgelb anmalen; er wird dadurch aber nicht zum Briefkasten, auch wenn er so aussieht.

          Schade eigentlich. Denn aus einem Abfalleimer einen Parkscheinautomaten zu machen, das geht schon! Parkscheinautomat ;)

          Dann muss ich wohl in den sauren Apfel beißen und das anders lösen ... Die von Nick vorgeschlagene Variante ist dann schon valide, oder?

          Dank & Gruß, luti

          1. Hallo,

            aus einem Abfalleimer einen Parkscheinautomaten zu machen, das geht schon! Parkscheinautomat ;)

            cool, solche Bilder mag ich!
            Mir sind da bei meinem Sommerurlaub letztes Jahr (per Boot durch Berlin und MeckPomm) auch ein paar nette Dinge aufgefallen:

            Reservierte Sitzplätze für Boote
            Rodeln auf der Wiese
            Nicht aus dem Feuerlöscher trinken

            Dann muss ich wohl in den sauren Apfel beißen und das anders lösen ... Die von Nick vorgeschlagene Variante ist dann schon valide, oder?

            Mal sehen ...
            hmm, ja. Soweit man das beurteilen kann. Wenn du einen Strict-DOCTYPE verwendest, musst du das input-Element noch in ein Blockelement packen, z.B. auch in einen Absatz (in Strict dürfen Inline-Elemente keine direkten Kinder von body oder form sein).

            So long,
             Martin

            --
            F: Was sagt die kleine Kerze zur großen Kerze?
            A: Ich gehe heute nacht aus!
            1. Hallo,

              Reservierte Sitzplätze für Boote
              Rodeln auf der Wiese
              Nicht aus dem Feuerlöscher trinken

              sehr schön ;)

              Ich bin jetzt dazu übergegangen einen Link statt des Formulares zu verwenden, dann muss ich kaum etwas im Code ändern ...

      2. Hi,

        Die Angabe "display: inline;" macht das Form-Element also nicht zu einem _echten_ Inline-Element?

        Zitat #1594

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.