wake-up-neo.net

Form in einer Form, ist das in Ordnung?

Ob wir ein Formular in einem anderen Formular haben können? Gibt es ein Problem damit.

169
Rajasekar

Eine HTML-Seite kann zwar mehrere <form> - Elemente enthalten, diese können jedoch nicht verschachtelt werden.

215
Oded

Formularverschachtelung kann mit dem Formularattribut des neuen HTML5-Eingabeelements erreicht werden. Obwohl wir Formulare nicht strukturell verschachteln, werden Eingaben so ausgewertet, wie sie in ihrer eigenen Form vorliegen. In meinen Tests unterstützen 3 gängige Browser dies mit Ausnahme des IE (IE11). Die Einschränkung der Formularverschachtelung war ein großes Hindernis für das HTML-UI-Design.

Hier ist ein Beispielcode, wenn Sie auf die Schaltfläche Speichern klicken, sollte "2 3 success" (Original http://www.impressivewebs.com/html5-form-attribute/ ) angezeigt werden:

<form id="saveForm" action="/post/dispatch/save" method="post"></form>
<form id="deleteForm" action="/post/dispatch/delete" method="post"></form>

<div id="toolbar">
    <input type="text" name="foo" form="saveForm" />
    <input type="hidden" value="some_id" form="deleteForm" />
    <input type="text" name="foo2" id="foo2" form="saveForm" value="success" />

    <input type="submit" name="save" value="Save" form="saveForm" onclick="alert(document.getElementById('deleteForm').elements.length + ' ' + document.getElementById('saveForm').elements.length + ' ' + document.getElementById('saveForm').elements['foo2'].value);return false;" />
    <input type="submit" name="delete" value="Delete" form="deleteForm" />
    <a href="/home/index">Cancel</a>
</div>
100
ilevent

Nein. HTML verbietet ausdrücklich verschachtelte Formulare.

Aus dem HTML 5-Entwurf :

Inhaltsmodell: Flow-Inhalt, jedoch ohne Nachkommen von Formularelementen.

Aus der HTML 4.01 Empfehlung :

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

(Beachten Sie den Abschnitt - (FORM)).

75
Quentin

Verschachtelte Formulare werden nicht unterstützt und sind nicht Teil des W3C-Standards (wie viele von Ihnen angegeben haben).

HTML5 bietet jedoch Unterstützung für Eingaben, bei denen es sich nicht um Nachkommen eines Formulars handeln muss, sondern die in mehreren Formularen eingereicht werden können - mithilfe des Attributs "form". Das erlaubt verschachtelte Formulare nicht genau, aber mit dieser Methode können Sie verschachtelte Formulare simulieren.

Der Wert des Attributs "form" muss die ID des Formulars sein. Bei mehreren Formularen müssen die Formular-IDs durch Leerzeichen getrennt werden.

Sie können mehr lesen hier

9
user3007766

Wenn Sie ein Master-Formular haben und gezwungen sind, ein "Formular mit einem Formular" zu haben, können Sie Folgendes tun ... In meinem Fall hatte ich einen Link im globalHeader und wollte einen Beitrag ausführen, als darauf geklickt wurde:

Beispiel für einen Beitrag mit Link-Button "Senden":

Anstelle eines Formulars ... schreiben Sie Ihre Eingabe in ein div:

 <div id="gap_form"><input type="hidden" name="PostVar"/><a id="myLink" href="javascript:Form2.submit()">A Link</a></div>

js datei:

$(document).ready(function () {
(function () {
    $('#gap_form').wrap('<form id="Form2" action="http://sitetopostto.com/postpage" method="post" target="_blank"></form>');
})();});

Dies würde alles in das div "gap_form" innerhalb eines Formulars im laufenden Betrieb einschließen und der Link würde dieses Formular senden. Ich habe genau dieses Beispiel, das gerade an einer Seite arbeitet ... (In meinem Beispiel ... könnten Sie dasselbe erreichen, indem Sie auf eine neue Seite umleiten und das Formular auf dieser Seite abschicken ... aber das gefällt mir besser.)

8
Ben Call

Ja da ist. Es ist falsch. Es wird nicht funktionieren, weil es falsch ist. Die meisten Browser sehen nur ein Formular.

http://www.w3.org/MarkUp/html3/forms.html

4
AlexanderMP

Eine andere Problemumgehung besteht darin, ein modales Fenster zu initiieren, das ein eigenes Formular enthält

4
manuchap

Es ist kein gültiges XHTML, geschachtelte Formulare zu haben. Sie können jedoch mehrere Senden-Schaltflächen verwenden und mithilfe eines serverseitigen Skripts unterschiedliche Codes ausführen, je nachdem, auf welche Schaltfläche der Benutzer geklickt hat.

3
Martin LeBlanc

Nein, wir können Formulare nicht in einem anderen Formular wie diesem verschachteln

<form name='form1'>
      <form name='form2'>
            //some code here
      </form>
</form>

in einigen Fällen funktioniert es, für universelle Plattformen wird es jedoch nicht empfohlen. Sie können viele SUBMIT-Schaltflächen in einem einzelnen Formular verwenden, ein verschachteltes Formular jedoch nicht ordnungsgemäß verwalten.

3
Gautam3164