Jetzt müssen Sie herausfinden, wie Sie 2 verschiedene Schaltflächen verwenden, um dasselbe Formular zu steuern
prodigitalson
Du brauchst die nicht :, da input ein Element und kein Pseudoselektor ist. Zweitens können Sie ein solches Objekt und eine solche Textzeichenfolge nicht in Ihrem Selektor verwenden. Sie müssen dies stattdessen als Scope-Argument für angeben $():
$('#ofform').live('submit', function(e) {
e.preventDefault();
var serializedReturn = $('input[name!=security]', this).serialize();
});
Danke. das funktioniert. außer, dass die Serialisierung immer noch Eingaben von anderen Formularen aufnimmt. es ist, als würde alles auf der Seite serialisiert
– Helgathewikinger
29. Dezember 2010 um 17:47 Uhr
IST ein Formular in dem anderen verschachtelt? weil du das kannst. Posten Sie Ihr Markup.
– prodigitalson
29. Dezember 2010 um 19:34 Uhr
@prodigitalson Sie können kein Formular in einem anderen haben (es ist sowieso unlogisch). Oder vielleicht hast du dich in deinem Kommentar vertippt…
– Christian
10. Januar 2013 um 14:29 Uhr
@Trip: Es war nur ein Beispiel … man kann zusätzliche Elemente wie hinzufügen select und textarea oder Dinge ausschließen wie input[type=submit]… hängen davon ab, was in der Form vor sich geht.
– prodigitalson
4. Februar 2013 um 22:22 Uhr
@Ezra fügen Sie einfach Selektoren nach Bedarf hinzu. Irgendwann möchten Sie vielleicht damit beginnen, Klassen oder Datenattribute zu verwenden, um Felder zu definieren, die ausgeschlossen oder eingeschlossen werden sollen … wie auch immer Sie vorgehen möchten.
– prodigitalson
30. März 2015 um 16:41 Uhr
jAndy
Zuerst müssen Sie die aufrufen .find() Methode wie:
var serializedReturn = $(this).find('input[name!=security]').serialize();
Andernfalls würde der komplette String in die CSS-Abfrage-Engine (Sizzle) gehen.
Zweitens:
Ich habe ein anderes Formular mit der ID ofform-reset und wenn ich verwende:
Sie müssen dies ändern. Es ist ungültiges Markup, mehrere IDs zu haben. Falls ich dich hier falsch verstanden habe, hilft dir vielleicht auch hier die erste Lösung weiter, indem du die aufrufst .find() Methode auch:
var serializedReturn = $('#ofform').find('input[name!=security]').serialize();
Was Ihren zweiten Punkt betrifft, bin ich mir nicht sicher, ob er das gemeint hat. Ich nehme an, er wollte einen Konjunktivsatz verwenden: “…Ich habe eine andere Form mit dem id von ‘form-reset’, und wenn ich es benutze…” Aber ich könnte mich irren.
– David Thomas
29. Dezember 2010 um 17:22 Uhr
@David: Ja, ich hatte die gleiche Idee, fügte ein paar Zeilen hinzu. Und … “er” ist wahrscheinlich eine “sie” 🙂
– jAndy
29. Dezember 2010 um 17:23 Uhr
und mein vorheriger Kommentar hätte ein weiteres Komma nach dem Wort “Form” verwenden können, um tatsächlich Sinn zu machen … =) Was meine Geschlechtsverwirrung angeht, wow. Ähm … tut mir leid, @Helga (ich habe mir deinen Namen nicht angesehen, bevor ich gepostet habe … @[email protected] )
– David Thomas
29. Dezember 2010 um 17:32 Uhr
keine Sorgen! aber die von Ihnen angegebene .find () -Methode nimmt immer noch die Eingaben in meinem 2. Formular auf. Das erste Formular (#ofform) hat alle Eingaben und das zweite Formular (#ofform-reset) hat die Reset-Schaltfläche – also habe ich nicht 2 Elemente mit derselben ID.
– Helgathewikinger
29. Dezember 2010 um 17:42 Uhr
Ich denke, es wird das ausgewählte Element ignorieren
– Yogesh Karodiya
16. Mai 2018 um 13:43 Uhr
Ich bin nicht zufrieden mit 'input[name!=security]' weil es alle anderen Eingabetypen wie ausschließt select,.. Sie können sie manuell hinzufügen, aber diese Liste wird immer länger mit neuen HTML-Tags. Mit jedem neuen Tag wird Ihr Code also erneut beschädigt.