javascript not Gibt es eine bessere jQuery-Lösung für this.form.submit();?




jquery form submit not working (7)

Ich möchte das Submit-Ereignis des Formulars auslösen, in dem sich das aktuelle Element befindet. Eine Methode, von der ich weiß, dass sie manchmal funktioniert, ist:

this.form.submit();

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

Bearbeiten:

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 das Formular bei Änderung des <select> einreichen können.

Nach was ich suche, ist eine Lösung, die auf irgendeinem Feld innerhalb irgendeiner Form funktioniert, ohne die Identifikation oder den Namen auf dem Formular zu kennen. $('form:first') und $('form') funktionieren nicht, weil das Formular das dritte auf der Seite sein könnte. Außerdem verwende ich jQuery bereits auf der Website, also ist die Verwendung von ein bisschen jQuery keine große Sache.

Also, gibt es eine Möglichkeit, jQuery das Formular abrufen zu lassen, in dem sich die Eingabe / select / textarea befindet?


Answer #1

Sie können Ihr form.submit immer JQuery-ize -ize, aber es kann nur das gleiche aufrufen:

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

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

Sie können auch Funktionen an das Submit-Ereignis JQuery-ize , aber das ist ein anderes Konzept.


Answer #2
<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'];

-->

Answer #3

In JQuery können Sie anrufen

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

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


Answer #4

Ich habe festgestellt, dass mit jQuery die beste Lösung ist

$(this.form).submit()

Mit dieser Anweisung funktionieren jquery plugins (zB jquery form plugin ) korrekt und jquery DOM traversing overhead wird minimiert.


Answer #5
this.form.submit();

Dies ist wahrscheinlich die beste Wahl. Insbesondere, wenn Sie jQuery nicht bereits in Ihrem Projekt verwenden, müssen Sie es (oder eine andere JS-Bibliothek) nicht einfach für diesen Zweck hinzufügen.


Answer #6

Ihre Frage ist insofern etwas verwirrend, als Sie nicht erklären, was Sie unter "aktuelles Element" verstehen.

Wenn Sie mehrere Formulare auf einer Seite mit allen Arten von Eingabeelementen und einer Schaltfläche vom Typ "Senden" haben, wird die Eingabe dieses Formulars ausgelöst, wenn Sie bei der Eingabe eines Feldes auf "Enter" klicken. Du brauchst dort kein Javascript.

Wenn Sie jedoch mehrere "Senden" -Schaltflächen in einem Formular und keine anderen Eingaben haben (z. B. die Zeilen "Zeile bearbeiten" und / oder "Zeile löschen" in der Tabelle), könnte die von Ihnen gepostete Zeile die richtige Vorgehensweise sein.

Ein anderer Weg (kein Javascript benötigt) könnte sein, alle Ihre Buttons (die vom Typ "submit" sind) verschiedene Werte zu geben. So was:

<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, wird nur das Formular mit der Schaltfläche gesendet und nur der Wert der Schaltfläche, die Sie getroffen haben, wird gesendet (zusammen mit anderen Eingabewerten).

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


Answer #7

Ähnlich wie bei Matthew's ich festgestellt, dass Sie Folgendes tun können:

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

Falsch: Das Problem bei der Verwendung der Parent-Funktionalität besteht darin, dass das Feld sofort in der Form sein muss, damit es funktioniert (nicht in Tds, Labels usw.).

Ich stehe korrigiert: Elternteil (mit einem s) funktioniert auch. Thxs Paolo, dass er darauf hingewiesen hat.





submit