Verwenden Sie einen normalen Link, um ein Formular zu senden

129

Ich möchte ein Formular einreichen. Aber ich gehe nicht die grundlegende Art und Weise, eine Eingabeschaltfläche mit Submit-Typ zu verwenden, sondern einen Link.

Das Bild unten zeigt warum. Ich verwende Bildlinks, um das Formular zu speichern / zu senden. Da ich ein Standard-CSS-Markup für Bildlinks habe, möchte ich keine Eingabeschaltflächen verwenden.

Ich habe versucht, onClick = "document.formName.submit ()" auf das a-Element anzuwenden, aber ich würde eine HTML-Methode bevorzugen.

Alt-Text

Irgendwelche Ideen?

Upvote
quelle
3
Verwenden Sie die Schaltfläche und CSS, um das Bild anzuzeigen, oder verwenden Sie Javascript. Es gibt keine echte Möglichkeit, einfach ein Formular ohne Javascript zu erstellen.
Anton S
Ich zweitens, leider ist dies kein einfacher Weg ohne Javascript
benhowdle89
4
Ihr Grund dafür klingt nach einer falschen Wirtschaft. Es ist besser, einfach ein Standard-CSS für Senden-Schaltflächen zu erstellen und Formulare so zu verwenden, wie sie verwendet werden sollen. Es gibt eine Reihe
dnagirl

Antworten:

168

Zwei Wege. Erstellen Sie entweder eine Schaltfläche und gestalten Sie sie so, dass sie wie ein Link mit CSS aussieht, oder erstellen Sie einen Link und verwenden Sie ihn onclick="this.closest('form').submit();return false;".

Jan Sverre
quelle
55
Aaaaaaaund hier ist eine Referenz zum Stylen
Flipchart
3
Beachten Sie, dass form.submit()dies ohne JavaScript nicht funktioniert
Taufe
3
@baptx sogar alte Smartphones haben Javascript aktiviert
Mahdi Jazini
2
@ MahdiJazini Viele Leute deaktivieren standardmäßig JavaScript, was aufdringlich sein und in einigen Fällen die Leistung beeinträchtigen kann. Wenn JavaScript fehlschlägt, kann die gesamte Website beschädigt werden (z. B. bei Verwendung eines CDN ohne lokalen Fallback und Blockierung der Drittanbieter-Domain). Wenn ein HTML-Fehler auftritt, können Sie die Website weiterhin verwenden. Entwickler sollten stattdessen das Prinzip der progressiven Verbesserung befolgen.
Taufe
3
Wenn Sie Benutzer ohne Javascript unterstützen möchten, führen Sie die erste in dieser Antwort beschriebene Option aus und gestalten Sie eine Schaltfläche wie einen Link. Zum Beispiel input[type=submit].link { border: none; background: none; display: inline; color: blue; text-decoration: underline; }und<input type=submit class="link" />
Jan Sverre
87

Sie können dies nicht wirklich tun, ohne nach meinem besten Wissen Skripte zu erstellen.

<form id="my_form">
<!-- Your Form -->    
<a href="javascript:{}" onclick="document.getElementById('my_form').submit(); return false;">submit</a>
</form>

Beispiel von hier .

JonVD
quelle
1
und liebe Besucher ... vergessen Sie nicht, die >>> id = "my_form" zu setzen, es ist keine ID: D
Mahdi Jazini
Dies sollte die beste und expliziteste Antwort sein, danke!
yehanny
28

Nur so zu stylen input type="submit"hat bei mir funktioniert:

.link-button { 
     background: none;
     border: none;
     color: #0066ff;
     text-decoration: underline;
     cursor: pointer; 
}
<input type="submit" class="link-button" />

Getestet in Chrome, IE 7-9, Firefox

Serj Sagan
quelle
Nur für den Datensatz: Sie sollten das entsprechende inputElement mithilfe von CSS-Selektoren auswählen, ohne eine Klasse an das HTML-Element anzuhängen.
Erik Kaplun
Obwohl Ihr Kommentar der bevorzugte Weg ist, ist dies nicht immer möglich
Serj Sagan
Warum ist das der bevorzugte Weg?
Mark
Es ist eine halb etablierte Codierungspraxis, die im Allgemeinen saubereres HTML hinterlässt ... aber es ist keine große Sache
Serj Sagan
1
Diese Antwort hängt auch nicht von Javascript ab, worüber Sie sich weniger Sorgen machen müssen
Matthew Lock,
10

Sie verwenden Bilder zum Senden. Sie können also einfach eine type="image"Eingabe-Schaltfläche verwenden:

<input type="image" src="yourimage.png" name="yourinputname" value="yourinputvalue" />
DiebMaster
quelle
1
... oder ein <button>Element mit einem <img/>Element darin.
DanMan
Hier ist der MDN-Link für den Fall, dass jemand anderes eine Quelle haben möchte: developer.mozilla.org/en-US/docs/Web/HTML/Element/input/image
Sam
5

verwenden:

<input type="image" src=".."/>

oder:

<button type="send"><img src=".."/> + any html code</button>

plus etwas CSS

atlavis
quelle
0

Mit reinem HTML gibt es definitiv keine Lösung, um ein Formular mit einem link ( a) -Tag zu senden . Das Standard-HTML akzeptiert nur Schaltflächen oder Bilder. Wie einige andere Mitarbeiter gesagt haben, kann man das Erscheinungsbild eines Links mithilfe einer Schaltfläche simulieren, aber ich denke, das ist nicht der Zweck der Frage.

IMHO glaube ich, dass die vorgeschlagene und akzeptierte Lösung nicht funktioniert.

Ich habe es auf einem Formular getestet und der Browser hat den Verweis auf das Formular nicht gefunden.

Es ist also möglich, es mit einer einzelnen Zeile JavaScript unter Verwendung eines thisObjekts zu lösen , das auf das angeklickte Element verweist, bei dem es sich um einen untergeordneten Knoten des Formulars handelt, das gesendet werden muss. So this.parentNodeist der Formularknoten. Nachdem es nur submit()Methode in dieser Form aufgerufen hat. Es ist keine notwendige Recherche aus dem gesamten Dokument erforderlich, um die richtige Form zu finden.

<form action="http://www.greatsolutions.com.br/indexint.htm"                   
   method="get">
    <h3> Enter your name</h3>
    First Name <input type="text"  name="fname"  size="30"><br>
    Last Name <input type="text" name="lname" size="30"><br>
    <a href="#" onclick="this.parentNode.submit();"> Submit here</a>
</form>

Angenommen, ich gebe mit meinem eigenen Namen ein:

Ausgefülltes Formular

Ich habe das getAttribut form method verwendet, da es möglich ist, die richtigen Parameter in der URL auf der geladenen Seite nach dem Senden anzuzeigen.

http://www.greatsolutions.com.br/indexint.htm?fname=Paulo&lname=Buchsbaum

Diese Lösung gilt natürlich für alle Tags, die das onclickEreignis oder ein ähnliches Ereignis akzeptieren .

thisist eine ausgezeichnete Wahl, um den Kontext zusammen mit einer eventVariablen (verfügbar in allen gängigen Browsern und ab IE9) wiederherzustellen, die direkt verwendet oder als Argument an eine Funktion übergeben werden kann.

Ersetzen Sie in diesem Fall die Zeile durch ein aTag durch die folgende Zeile. Verwenden Sie dazu die Eigenschaft target, die das Element angibt, das das Ereignis gestartet hat.

<a href="#" onclick="event.target.parentNode.submit();"> Submit here</a>
Paulo Buchsbaum
quelle
@ Nathan, ich habe nicht viel Übung darin zu schreiben Stackoverflow. Ich hoffe, dass Ihre Korrekturen mir helfen, meinen Stil zu verbessern. Mein Englisch ist auch nicht gut.
Paulo Buchsbaum
0

Sie können OnClick = "document.getElementById ('formID_NOT_NAME'). SUBMIT ()" verwenden.

Sameh Helaly
quelle