Frage

Ich mag das einreichen Ereignis des Formulars auszulösen das aktuelle Element in ist ein Verfahren, ich Werke manchmal weiß, ist:.

this.form.submit();

Ich frage mich, ob es eine bessere Lösung ist, möglicherweise jQuery verwenden, da ich nicht 100% sicher, dass Verfahren in jedem Browser funktioniert bin.

Edit:

Die Situation, die ich habe, ist, wie folgt:

<form method="get">
    <p><label>Field Label
        <select onchange="this.form.submit();">
            <option value="blah">Blah</option>
            ....
        </select></label>
    </p>
</form>

Ich möchte in der Lage, die Form auf Änderung des <select> einzureichen.

Was ich suche ist eine Lösung, ohne zu wissen, die ID oder den Namen auf dem Formular in irgendeiner Form auf jedem Feld arbeitet. $('form:first') und $('form') wird nicht funktionieren, weil die Form der dritte auf der Seite sein könnte. Auch ich bin mit jQuery auf der Website bereits, so ein bisschen jQuery ist keine große Sache.

So ist es eine Möglichkeit, jQuery rufen Sie die Form der Eingabe / select / Textarea in ist zu haben?

War es hilfreich?

Lösung

Ich denke, was Sie suchen etwas wie folgt lautet:

$(field).closest("form").submit();

Um zum Beispiel des onchange Ereignis zu behandeln, würden Sie diese:

$(select your fields here).change(function() {
    $(this).closest("form").submit();
});

Wenn Sie aus irgendeinem Grund nicht jQuery 1.3 oder höher verwenden, können Sie parents statt closest nennen.

Andere Tipps

this.form.submit();

Dies ist wahrscheinlich die beste Wahl. Vor allem, wenn Sie nicht bereits jQuery in Ihrem Projekt verwenden, gibt es keine Notwendigkeit, es zu addieren (oder jede andere JS-Bibliothek) nur für diesen Zweck.

Sie können jederzeit JQuery-ize Ihre form.submit, aber es kann nur die nennen gleiche:

$("form").submit(); // probably able to affect multiple forms (good or bad)

// or you can address it by ID
$("#yourFormId").submit();

Sie können auch befestigen Funktionen zur Veranstaltung einreichen, aber das ist ein anderes Konzept.

Ähnlich wie Matthäus Antwort fand ich nur, dass Sie folgendes ausführen können:

$(this).closest('form').submit();

Falsch: Das Problem mit der übergeordneten Funktion ist, dass das Feld in der Form sein, sofort zu arbeiten muß (nicht innerhalb tds, Etikett, etc.)

.

Ich stehe korrigiert: parent s (mit s) auch funktioniert. Thxs Paolo für den Hinweis.

ich gefunden habe, dass jQuery die beste Lösung verwendet, ist

$(this.form).submit()

Mit Hilfe dieser Anweisung jQuery-Plugins (zB Jquery Form Plugin ) korrekt funktioniert und jquery DOM durchqueren Aufwand minimiert wird .

Ihre Frage in etwas verwirrend, dass die Ihnen nicht erklären, was Sie unter „aktuelle Element“ bedeuten.

Wenn Sie mehrere Formulare auf einer Seite mit allen Arten von Eingabeelementen und einer Schaltfläche vom Typ haben „Eintragen“, dann auf „Eingabe“ auf irgendetwas davon füllen Felder sind werden Übermittlung dieser Form auslösen. Sie brauchen keine Javascript gibt.

Aber wenn Sie mehrere haben „Eintragen“ Tasten auf einem Formular und keine anderen Eingaben (z „bearbeiten Zeile“ und / oder Schaltflächen in der Tabelle „Zeile löschen“), dann ist die Linie, die Sie gebucht könnte die Art und Weise, es zu tun.

Eine andere Art und Weise (nicht benötigt Javascript) könnten verschiedene Werte auf alle Ihre Tasten geben zu (die vom Typ sind „Eintragen“). Wie folgt aus:

<form action="...">
    <input type="hidden" name="rowId" value="...">
    <button type="submit" name="myaction" value="edit">Edit</button>
    <button type="submit" name="myaction" value="delete">Delete</button>
</form>

Wenn Sie auf eine Schaltfläche klicken nur die Form auf den Button enthält, vorgelegt werden, und nur den Wert der Schaltfläche werden Sie (entlang anderen Eingabewerte) gesendet getroffen.

Dann auf dem Server lesen Sie einfach den Wert der Variablen „myaction“ und entscheiden, was zu tun ist.

In JQuery können Sie anrufen

$("form:first").trigger("submit")

Sie wissen nicht, ob das viel besser ist. Ich denke, form.submit (); ist ziemlich universell.

<form method="get">
   <p><label>Field Label
      <select onchange="this.form.submit();">
         <option value="blah">Blah</option>
            ....
     </select>
     </label>
   </p>
    **<!-- <input name="submit" type="submit" /> // name="submit_new_name" -->**
  </form>

<!-- 

   this.form.submit == this.form.elements['submit'];

-->
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top