Stoppen Sie ein Eingabefeld in einem Formular, das nicht gesendet werden soll
Ich Schreibe einige javascript (ein greasemonkey/userscript) eingefügt werden einige Eingabefelder in ein Formular auf einer Webseite.
Die Sache ist die, ich will nicht diese Eingabe-Felder, um die form beeinflussen in irgendeiner Weise, ich will nicht, dass Sie eingereicht werden, wenn das Formular abgeschickt wird, ich will nur meinen javascript-Zugriff auf Ihre Werte.
Gibt es eine Möglichkeit, ich könnte noch einige Felder in der Mitte ein Formular und nicht über Sie gestellt wird, wenn das Formular abgeschickt wird?
Offensichtlich die ideale Sache wäre, für die input-Felder nicht im Formular-element, aber ich möchte das layout meiner resultierende Seite zu haben, der meine eingefügten Eingabefelder erscheinen zwischen den Elementen der ursprünglichen form.
InformationsquelleAutor der Frage Acorn | 2010-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man einfügen input-Felder ohne Attribut "name":
Oder Sie können einfach entfernen Sie Sie, sobald das Formular abgeschickt wird (in jquery):
InformationsquelleAutor der Antwort Gal
Die einfachste Sache zu tun wäre, legen Sie die Elemente mit der
disabled
Attribut.Diese Weise können Sie immer noch Zugang zu Ihnen haben als Kinder die form.
Deaktivierte Felder haben den Nachteil, dass der Benutzer nicht interagieren können, mit Ihnen - so, wenn Sie eine
disabled
Textfeld, kann der Benutzer nicht auswählen der text. Wenn Sie einedisabled
checkbox, kann der Benutzer nicht seinen Zustand ändern.Könnte man auch einige javascript schreiben, um das Feuer auf dem Formular zu entfernen, die Felder, die Sie nicht übermitteln möchten.
InformationsquelleAutor der Antwort Johrn
Können Sie eine Ereignisprozedur schreiben, die für
onsubmit
entfernt diename
- Attribut, werden alle Eingabe-Felder, die Sie möchten, nicht in der form der Unterwerfung.Hier ist eine schnelle ungetestet Beispiel:
InformationsquelleAutor der Antwort Jacob Relkin
Einfach versuchen, Sie zu entfernen Namen - Attribut vom input-element.
So hat es zu schauen, wie
InformationsquelleAutor der Antwort Lesha Pipiev
Ich wollte nur hinzufügen, eine zusätzliche option: In Ihrer Eingabe fügen Sie den form-tag und geben Sie den Namen ein Formular, das nicht vorhanden ist auf Ihrer Seite:
InformationsquelleAutor der Antwort farvgnugn
Hinzufügen disabled="disabled" im Eingang und während jquery entfernen Sie das Attribut deaktiviert, wenn Sie möchten, senden Sie es verwenden .removeAttr('disabled')
HTML:
<input type="hidden" name="test" value="test" disabled='disabled'/>
jquery:
$("input[name='test']").removeAttr('disabled');
InformationsquelleAutor der Antwort Pikka pikka
Ich weiß, dieser Beitrag ist uralt, aber ich werde Antworten sowieso. Die einfachste/beste Möglichkeit, die ich gefunden habe, ist einfach zu einfach den Namen leer.
Setzen Sie diese, bevor Sie Ihre submit:
Alles in allem Ihre submit-Funktion könnte wie folgt Aussehen:
Wird dies immer noch senden Sie das Formular mit allen anderen Feldern, aber nicht abgeschickt werden, die ohne einen Namen.
InformationsquelleAutor der Antwort Will
Griff die form submit in einer Funktion, die per onSubmit() und führen Sie etwas wie unten zu entfernen, das form-element:
Verwenden
getElementById()
im DOM, dann mit[object].parentNode.removeChild([object])
angenommen, Ihr Gebiet in Frage, hat ein id-Attribut "my_removable_field"
code:
Diese erhalten Sie genau das, was Sie suchen.
InformationsquelleAutor der Antwort ring bearer
Tun Sie auch brauchen, Sie werden input-Elemente in den ersten Platz? Sie können Javascript verwenden, um dynamisch erstellen divs oder Absätze oder Listenelemente oder was auch immer, enthalten die Informationen, die Sie präsentieren wollen.
Aber wenn das interaktive element ist wichtig, und es ist ein Schmerz in den Hintern, um die Elemente außerhalb der
<form>
block, müsste es doch möglich sein, entfernen Sie diese Elemente aus der form, wenn die Seite vorgelegt wird.InformationsquelleAutor der Antwort BlairHippo
Müssen Sie hinzufügen "onsubmit" an Ihrer form:
Und das Skript wird wie folgt Aussehen:
Dies funktioniert für mich jedes mal 🙂
InformationsquelleAutor der Antwort Vasilakakis Anastasios