• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bei aktiviertem Javascript "absenden" eines Links verhindern

Status
Für weitere Antworten geschlossen.

Gilles

Blogger
Hallo Zusammen,
Ich habe ein wenig das Internet für mein Problem durchforstet, jedoch für mein Problem keine Lösung gefunden. Vielleicht kennt ja einer von euch die Lösung. Ich freue mich über jede Hilfestellung :)

Mein problem ist folgendes. Ich habe einen Link, der einen Beitrag löschen soll. Dieser könnte beispielweise so aussehen:

HTML:
  <a href="deleteForm?action=delete&id=2">Lösche mich </a>
Ich habe auf jeden dieser Links einen mousedown-Listener gelegt. Nun ist meine Frage ob folgendes Scenario möglich ist.
Bei Javascript wird die mousedown Funktion ausgeführt ohne dass der Link einen zur nächsten Seite weiterleitet.

Ich möchte nämlich folgendes realisieren:
Man klickt auf den Link-> Ajax Request wird ausgeführt und das Formular zum löschen wird dynamisch in die Seite reingeladen
Ohne javascript auf Link klicken-> Ausführung des Links und somit Weiterleitung auf das Formular

Ich hoffe ihr könnt mir da helfen. Vielen Dank schon mal

Gilles

---

Wollte noch eine Kleinigkeit hinzufügen :) Und zwar könnte man das href Attribut überschreiben, Jedoch kann man das mit Ajax hinzugefügte Formular wieder schliessen, und somit müsste man wieder den Link zur Verfügung haben. :)

Hab inzwischen eine Antwort herausgefunden. Wer das selbe Problem hat sollte damit nicht bestraft sein. Hier mein Lösungsbeispiel:

Zunächst definiert man einen Event Handler.
z.B.
Code:
document.getElementById("meinLink").onclick = doStuff;

Wenn man nun auf den Butotn klickt wird die Funktion doStuff aufgerufen. Diese würde alle Befehle ausführen und dann ihren gewohnten Vorgang machen (In dem Falle hier weiter zu der href Seite leiten)
Es gibt jedoch 2 Befehle die dies verhindern. Somit müsste die Funktion folgendermaßen aussehen.

Code:
function doStuff(event) {
  // Für Fire Fox usw.
  event.preventDefault();
  // Für IE
  event.returnValue = false;

  /* Nun das was gemacht werden soll */
 document.getElementById("inhalt").innerHTML += "<span> Hat geklappt </span>"
}

An sich ist es ja nur ein Befehl. Aber man will ja das es überall klappt. Und Microsoft macht hier wieder mal eine Ausnahme ;).
Das Event welches es ausgelöst hat, wird vom Event handler immer als erster Parameter mit an die Funktion gesendet.

Ich hoffe das hilft Anderen :)
 
Zuletzt bearbeitet von einem Moderator:
Hast du schon sehr gut gelöst, indem du preventDefault() bzw. returnValue einsetzt.

IE ist einfach anders. Statt ein Event-Objekt zu übergeben, speichert er das Event-Objekt im globalen Namespace: window als Eigenschaft "event".
Code:
function doStuff(event) {
  event = event || window.event;

  // Für Fire Fox usw.
  event.preventDefault();
  // Für IE
  event.returnValue = false;

  /* Nun das was gemacht werden soll */
 document.getElementById("inhalt").innerHTML += "<span> Hat geklappt </span>"
}
Wenn du dir das Leben etwas leichter machen willst, empfehle ich dir diesen Wrapper für IE: design-noir | Webentwicklung | JavaScript | addEvent & removeEvent
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben