Ich möchte, dass dieser Link ein JavaScript-Dialogfeld enthält, in dem der Benutzer gefragt wird: „ Sind Sie sicher? J / N ”.
<a href="delete.php?id=22">Link</a>
Wenn der Benutzer auf "Ja" klickt, sollte der Link geladen werden, wenn "Nein", passiert nichts.
Ich weiß, wie man das in Formularen macht, indem onclick
man eine Funktion ausführt, die true
oder zurückgibt false
. Aber wie mache ich das mit einem <a>
Link?
javascript
html
dom-events
Christoffer
quelle
quelle
Antworten:
Inline-Event-Handler
Auf einfachste Weise können Sie die
confirm()
Funktion in einem Inline-onclick
Handler verwenden.Erweiterte Ereignisbehandlung
Normalerweise möchten Sie jedoch HTML und Javascript trennen. Ich empfehle daher, keine Inline-Ereignishandler zu verwenden, sondern eine Klasse in Ihren Link einzufügen und einen Ereignis-Listener hinzuzufügen.
Dieses Beispiel wird in modernen Browsern nur Arbeit (für ältere IEs können Sie verwenden
attachEvent()
,returnValue
und für eine Implementierung zur Verfügung stellengetElementsByClassName()
oder eine Bibliothek wie jQuery verwenden , die mit Cross-Browser - Problemen helfen). Weitere Informationen zu dieser erweiterten Ereignisbehandlungsmethode finden Sie in MDN .jQuery
Ich würde gerne weit davon entfernt sein, als jQuery-Fanboy betrachtet zu werden, aber DOM-Manipulation und Ereignisbehandlung sind zwei Bereiche, in denen es bei Browserunterschieden am meisten hilft. Nur zum Spaß, so würde das mit jQuery aussehen :
quelle
confirm(…)
im Inline-Handler ein Fehler aufgetreten . Das konnte ich nicht reproduzieren.Ich würde vorschlagen, Inline-JavaScript zu vermeiden:
JS Fiddle Demo .
Das oben Gesagte wurde aktualisiert, um Platz zu sparen, obwohl Klarheit / Funktion erhalten bleiben:
JS Fiddle Demo .
Ein etwas verspätetes Update, das verwendet werden kann
addEventListener()
(wie von bažmegakapa in den Kommentaren unten vorgeschlagen):JS Fiddle Demo .
Das Obige bindet eine Funktion an das Ereignis jeder einzelnen Verbindung; Dies ist möglicherweise ziemlich verschwenderisch, wenn Sie die Ereignisbehandlung (mithilfe der Delegierung) an ein Vorgängerelement wie das folgende binden können:
JS Fiddle Demo .
Da die Ereignisbehandlung an das
body
Element angehängt ist, das normalerweise eine Vielzahl anderer anklickbarer Elemente enthält, habe ich eine Zwischenfunktion (actionToFunction
) verwendet, um zu bestimmen, was mit diesem Klick geschehen soll. Wenn das angeklickte Element ein Link ist und daher eintagName
von hata
, wird die Klickbehandlung an diereallySure()
Funktion übergeben.Verweise:
addEventListener()
.confirm()
.getElementsByTagName()
.onclick
.if () {}
.quelle
addEventListener
). +1 obwohl.addEventListener()
Modell vertraut gemacht habe .if(check == true)
mitif(check)
.quelle
Sie können dies auch versuchen:
quelle
jAplus
Sie können dies tun, ohne JavaScript-Code zu schreiben
Demoseite
quelle
Diese Methode unterscheidet sich geringfügig von den oben genannten Antworten, wenn Sie Ihren Ereignishandler mit addEventListener (oder attachEvent) anhängen.
Sie können diesen Handler mit folgenden Optionen anhängen:
Oder für ältere Versionen des Internet Explorers:
quelle
window.event
.Nur zum Spaß werde ich ein einzelnes Ereignis für das gesamte Dokument verwenden, anstatt allen Ankertags ein Ereignis hinzuzufügen :
Diese Methode wäre effizienter, wenn Sie viele Ankertags hätten. Natürlich wird es noch effizienter, wenn Sie dieses Ereignis dem Container mit allen Ankertags hinzufügen.
quelle
Die meisten Browser zeigen die an übergebene benutzerdefinierte Nachricht nicht an
confirm()
.Mit dieser Methode können Sie ein Popup mit einer benutzerdefinierten Nachricht anzeigen, wenn Ihr Benutzer den Wert eines
<input>
Felds geändert hat .Sie können dies nur auf einige Links oder sogar andere HTML-Elemente auf Ihrer Seite anwenden . Fügen Sie einfach eine benutzerdefinierte Klasse zu allen Links hinzu, die bestätigt werden müssen, und wenden Sie den folgenden Code an:
Versuchen Sie, den Eingabewert im Beispiel zu ändern, um eine Vorschau der Funktionsweise zu erhalten.
quelle
VERWENDUNG VON PHP, HTML UND JAVASCRIPT zur Eingabeaufforderung
Nur wenn jemand nach PHP, HTML und Javascript in einer einzigen Datei sucht , funktioniert die Antwort unten für mich. Ich habe mit dem verwendeten Bootstrap-Symbol "Papierkorb" für den Link angehängt.
Der Grund, warum ich PHP- Code in der Mitte verwendet habe, ist, dass ich ihn nicht von Anfang an verwenden kann.
Der folgende Code funktioniert bei mir nicht: -
und ich habe es wie im 1. Code geändert, dann laufe ich genau so, wie ich es brauche. Ich hoffe, dass ich jemandem helfen kann, der meinen Fall nicht braucht.
quelle