kann mir jemand evtl. sagen wieso ich mit $('#orderform')[0].submit(); das “hauptformular” in der user.tpl (z.b wenn ich als gast bestelle) nicht auslösen kann? In der neuen oxid v6 funktioniert es und in der alten version 4.6.1 (basic theme) tut sich nix bzw. die user.tpl wird “neugeladen” aber das formular wird nicht submitted (könnt ihr gerne testen).
Der hintergrund ist das ich ein kleines jquery script gebaut habe, welches ein kleine ajax abfrage ausführt sobald ich auf den “weiter” button klicke und sobald ich die daten habe soll eben die form mit $('#orderform')[0].submit(); submitted werden.
Hat hier jemand eine idee wo ich evtl. ansetzen muss? Und bitte keine diskussionen bzgl. der alten oxid version, die v6 ist bei uns gerade in der mache
.submit() ist ein jquery grundbefehl und “völlig” unabhängig von html. Lediglich der selektor wird entsprechend angepasst. Das gilt auch für die meisten jquery-codes, deswegen verstehe ich deine aussage nicht. Hier geht es um ein simplen jquery trigger, der auf jeder html seite funktioniert die eine form hat …
Ich nutze beim oxid 4.6.1 die jquery version 1.9.1 eingebunden per google-api. Die console gibt keine fehler aus. Es wird lediglich die user.tpl “reloaded” … komme da gerade nicht wirklich weiter.
Steht doch im ersten post was mein selektor ist. Die ID der form (#orderform), daher auch $('#orderform')[0].submit();. Logisch oder?
Ich vermute hier ein problem beim “alten” oxid, denn bei v6 geht es und ich war eben mal auf 5 völlig fremden zufälligen seiten mit kontaktformular und dort geht es auch.
Nein, die ID darf nur einmal vorkommen, weshalb es wohl $(‘#orderform’).submit(); heißen sollte. Aus 2 Formen kannst mit $('.orderform')[0].submit(); das erste DOM-Element einer Klasse (!!) oder direkt $('form')[0].submit(); auswählen.
Ok aber das ändert leider nix an der tatsache. Ob $(’#orderform’).submit(); oder $('#orderform')[0].submit(); oder auch $(’.orderform’).submit(); es funktioniert nicht, immer das gleiche ergebnis. Auf den 5 wahllosen testseiten haben beide methoden reibungslos funktioniert.
Verstehe nicht wieso der “simple” trigger nicht funktioniert …
$(’#orderform’) -> jquery object
$(’#orderform’)[0] -> dom element
geht beides. Und normal geht das auch im “alten” Oxid. Wenn die Seite neu geladen wird, schlägt wahrscheinlich ein Check fehl (“füllen Sie alle Felder aus”). Du musst dir also anschauen was abgesendet wird und warum das bei dir nicht geht, hat aber nichts mit Oxid zu tun. Kannst du alles in der Konsole sehen.
Bei einer frisch installierten oxid shop installtion (4.6.1) wird beim genannten befehl einfach die seite neugeladen, egal ob kein feld ausgefüllt ist oder alle felder ausgefüllt sind. Daher ist es nicht unwahrscheinlich as irgendwas mit dem check der felder nicht stimmt. Klicke ich allerdings den weiter-button ganz normal mit der maus, funktioniert es einwandfrei. Ebenfalls sehe ich bei beiden varianten keiner unterschiede in der console, alle parameter scheinen gleich zu sein die gesendet werden …
Edit: Sehe gerade das ein parameter fehlt der übergeben wird. userform: Weiter+zum+n%E4chsten+Schritt Das könnte das problem sein …
Lass Dir mal form ausgeben: console.log(form);
Wenn da was fehlt, würde ich es so versuchen: var form = $(this).closest('form'); var form = $(this).closest('form')[0]; DOM