573 Stimmen

Können Sie HTML-Formulare verschachteln?

Ist es möglich, HTML-Formulare wie folgt zu verschachteln

<form name="mainForm">
  <form name="subForm">
  </form>
</form>

so dass beide Formen funktionieren? Mein Freund hat Probleme damit, ein Teil der subForm funktioniert, während ein anderer Teil nicht funktioniert.

4voto

larry Punkte 29

Über Verschachtelungsformen: Ich habe 10 Jahre damit verbracht, an einem Nachmittag ein Ajax-Skript zu debuggen.

In meiner vorherigen Antwort/Beispiel wurde das html-Markup nicht berücksichtigt, sorry.

<form id='form_1' et al>
  <input stuff>
  <submit onClick='ajaxFunction(That_Puts_form_2_In_The_ajaxContainer)' >
  <td id='ajaxContainer></td>
</form>

form_2 schlug ständig fehl und meldete ungültiges form_2.

Als ich den ajaxContainer verschob, der form_2 erzeugte <i>outside</i> von form_1, war ich wieder im Geschäft. Das beantwortet die Frage, warum man Formulare verschachteln sollte. Ich meine, wozu ist die ID da, wenn nicht, um zu definieren, welches Formular verwendet werden soll? Es muss eine bessere, elegantere Lösung geben.

2voto

diogosimao Punkte 153

Wirklich nicht möglich... Ich konnte keine Formular-Tags verschachteln... Allerdings habe ich diesen Code verwendet:

<form>
    OTHER FORM STUFF

    <div novalidate role="form" method="post" id="fake_form_id_0" data-url="YOUR_POST_URL">
        THIS FORM STUFF
    </div>
</form>

をもって {% csrf_token %} und so

und wandte einige JS an

var url = $(form_id).attr("data-url");

$.ajax({
  url: url,
  "type": "POST",
   "data": {
    'csrfmiddlewaretoken': '{{ csrf_token }}',
    'custom-param-attachment': 'value'
  },
  success: function (e, data) {
      if (e.is_valid) {
         DO STUFF
      }
  }
});

1voto

Roger Krueger Punkte 273

Bevor ich wusste, dass ich das nicht tun sollte, hatte ich Formulare verschachtelt, um mehrere Übermittlungsschaltflächen zu haben. So lief das 18 Monate lang, mit Tausenden von Anmeldetransaktionen, und niemand rief uns wegen irgendwelcher Schwierigkeiten an.

Verschachtelte Formulare gaben mir eine ID, die ich auswerten musste, um die richtige Aktion zu finden. Erst als ich versuchte, ein Feld an eine der Schaltflächen anzuhängen und Validate sich beschwerte, kam es zu einem Problem. Es war keine große Sache, es zu entwirren - ich habe ein explizites Stringify auf dem äußeren Formular verwendet, so dass es keine Rolle spielte, dass das Submit und das Formular nicht übereinstimmten. Ja, ja, sollte genommen haben, die Tasten von einem einreichen zu einem onclick.

Der Punkt ist, dass es Umstände gibt, unter denen es nicht völlig kaputt ist. Aber "nicht ganz kaputt" ist vielleicht ein zu niedriger Standard, um ihn anzustreben :-)

1voto

Shree Sthapit Punkte 186

Nein, Sie können kein verschachteltes Formular haben. Stattdessen können Sie ein Modal öffnen, das ein Formular enthält und eine Ajax-Formularübermittlung durchführen.

0voto

Shivanshu Punkte 19

Heute bin ich auch in demselben Problem stecken geblieben, und um das Problem zu lösen, habe ich eine Benutzersteuerung hinzugefügt und
für dieses Steuerelement verwende ich folgenden Code

<div class="divformTagEx">

</div>

<asp:Literal runat="server" ID="litFormTag" Visible="false">
'<div> <form  style="margin-bottom: 3;" action="http://login.php" method="post" name="testformtag"></form> </div>'</asp:Literal>

und beim PreRenderComplete-Ereignis der Seite diese Methode aufrufen

private void InitializeJavaScript()
{
        var script = new StringBuilder();
        script.Append("$(document).ready(function () {");
        script.Append("$('.divformTagEx').append( ");
        script.Append(litFormTag.Text);
        script.Append(" )");
        script.Append(" });");
        ScriptManager.RegisterStartupScript(this, GetType(), "nestedFormTagEx", script.ToString(), true);
    }

Ich glaube, das wird helfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X