JavaScript HTML Link <a> ohne href mit onClick

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.503
Hi,

ich habe einen Link-Tag <a> mit einem onClick event.
Bei Klick auf diesen Link wird eine js Funktion aufgerufen, die ein form erstellt, dort ein paar dynamische Daten einfügt und abschickt. Der entsprechende Link unter action="" in diesem Formular lädt die neue Seite.
Das a-Tag hat kein href Attribut.

Das ganze funktioniert in Chrome wunderbar. Ich musste jedoch feststellen, dass firefox und iexplorer dort gar nichts tun. Woran kann das liegen?

Vielen Dank für eure Hilfe
 
Wie sieht denn der Code aus?

onClick Events führen IE und FF eigentlich genauso aus wie Chrome.
 
href="#" rendert es zwar als link, das onClick event wird trotzdem nicht ausgeführt

Der Code des Links:
HTML:
<a onclick="start_session_by_click(34, 2014, 6, 'String');"><i class="fa fa-check-square fa-lg fa_use"></i></a>
 
Muss es unbedingt ein <a> sein? div/span sollten genauso funktionieren.

Sicher dass die Funktion nicht aufgerufen wird? Evtl. schlägt auch was in der Funktion fehl. Mach die mal eine Logausgabe direkt als erste Zeile rein.
 
Zuletzt bearbeitet:
F12 -> Konsole -> Seite neu laden und funktion durchführen

Vielleicht ist dort der Fehler in FF sichtbar..
 
Also ich kenn mich mit firefox nicht so gut aus.

Ich habe jetzt auf Konsole geklickt und dort sind Logbuch und JS aktiviert. Das Logbuch gibt aber keine Ausgabe. Es gibt eine Fehlermeldung von JS, die hat aber nichts mit der Funktion zu tun.
Ergänzung ()

Entweder die Funktion wird nicht ausgeführt, oder sie verursacht keinen Fehler.

Habs so gemacht, wie peps90 beschrieben
 
Wenn das Script vorher schon Fehler auswirft, dann werden solche Click-Events unter Umständen nicht mehr abgehandelt.

Aber die Frage bleibt: Warum ein <a>? Semantischer Mehrwert = 0.
 
Ich nutze hier ein a-Tag, da:
1) es ein Link neben einigen anderen ist, der die gleichen CSS Eigenschaften bekommen soll
2) früher ein GET Link das Ereignis ausgelöst hat, ich jetzt aber einiges geändert habe und das Ereignis nur noch über POST Anfragen gesteuert wird. Hierfür gibt es eine Reihe von Formularen und halt diesen Link

Ich habe es mit einem span Tag versucht, es geht leider ebenfalls nicht.
 
Dann würde ich sagen: Kennst du schon console.log("Deine Debug-Nachricht"); ?
 
Daaron schrieb:
Wenn das Script vorher schon Fehler auswirft, dann werden solche Click-Events unter Umständen nicht mehr abgehandelt.
Genau so ist es!

Kannst du aber nciht den Code hier posten bzw. hochladen?! Damit fällt es uns leichter dir zu helfen :p
 
Hi, habs jetzt und will euch die Lösung nicht vorenthalten.

Im gegensatz zu Chrome möchte firefox bei mir, dass das form Object auch im DOM hinzugefügt wird.
Zuerst habe ich das gesamte form mit .style.display = "none"; unsichtbar gemacht, damit es nicht kurzzeitig aufploppt und anschließend mit document.getElementsByTagName('body')[0].appendChild(form); ans Ende im body Tag gesetzt. Danach lässt es sich mit form.submit abschicken. Chrome, oder mein iPad brauchten diesen Schritt nicht.

Andere Quellen besagten, dass ein submit-input im form vorhanden sein muss. Bei mir gibt es jetzt beides und hoffentlich klappt jetzt alles.

Vielen Dank euch
 
Andere Quellen besagten, dass ein submit-input im form vorhanden sein muss. Bei mir gibt es jetzt beides und hoffentlich klappt jetzt alles.

Vor HTML5 musste der Submit innerhalb des Forms sein, richtig. Aber mit HTML5 gibt es ein neues Attribut, sodass sich der Submit Button außerhalb des Formulares befinden kann. Leider sperrst du damit den IE (auch die aktuelle 11er-Version) und andere ältere Browser komplett aus. Darum ist JavaScript noch die bessere Lösung, wenn der Button außerhalb sein muss.

http://stackoverflow.com/questions/7020659/submit-form-using-a-button-outside-the-form-tag
 
ich habe mich undeutlich ausgedrückt.

Ich meinte nicht, dass der submit input unbedingt IM form sein muss, sondern, dass überhaupt ein submit input für dieses form vorhanden ist.

Chrome schickt das form ab, ohne dass ich ein input.type="submit" konstruiert habe
 
Zurück
Oben