Wenn ich ein a
-Tag habe:
Und etwas Javascript, das zur Bestätigung des Löschens auffordert:
%Vor% Ich dachte, e.preventDefault()
würde das a href
daran hindern zu feuern, aber es ist nicht so. Wenn ich auf das a-Tag klicke, geht es einfach zur URL, ohne das Javascript auszuführen. Wie kann ich das schaffen?
Danke.
Dieser Code funktioniert:
Du kannst nicht einfach return true
ausführen und erwarten, dass der Link ausgelöst wird, nachdem du e.preventDefault()
erledigt hast. Ich musste Ihre bootbox.confirm()
durch eine JS-Bestätigung ersetzen, aber es sollte immer noch funktionieren.
Versuchen Sie, Ihren Codeblock durch den oben angegebenen Code zu ersetzen. Wenn das funktioniert, setze deine bootbox
-Bestätigung zurück und versuche es erneut. Das wird dir sagen, wo der Fehler ist.
Es ist besser, es nur bei Bedarf zu verhindern. Wenn der Benutzer z. B. "Abbrechen" aus dem Bestätigungsfeld ausgewählt hat, dann verhindern Sie die Standardeinstellung.
%Vor%Demo: Ссылка
Normalerweise, wenn Sie eine Bestätigung benötigen, ist dies der beste Weg, um dies zu erreichen, und das Ereignis ist für Bestätigungen vor dem Absenden von Formularen hilfreicher.
Ich bin mir nicht sicher, ob bootbox das Verhalten von Browsern repliziert, wenn Sie um Bestätigung bitten. In diesem Szenario funktioniert es möglicherweise nicht. Wenn das der Fall ist, ist es besser, irgendwo eine Flagge zu setzen.
%Vor%Irgendwie mag ich die Methode window.location nicht, weil sie dazu führen kann, dass andere mit diesem Element verbundene Ereignisse fehlschlagen.
Ich habe dieses Problem auch getroffen.
Sie können window.location verwenden, damit der Browser eine neue Seite besucht, aber die aktuelle Seite wird nicht im Browserverlauf aufgezeichnet (zumindest nicht mit Google Chrome).
Also stimme ich SMathew zu, dass das neue Ereignis ausgelöst werden sollte. Aus Sicherheitsgründen führt das Klickereignis für Anker, die von jQuery ausgelöst werden, nicht dazu, dass der Browser eine neue Seite aufruft. Endlich fand ich den folgenden Code.
%Vor%Ich habe nur den obigen Code in Google Chrome getestet, und ich habe den Fire Event-Code von Ссылка
MEHR
Ich habe diesen Beitrag Ссылка und jQuery.simulate kann verwendet werden, um dieses Problem zu lösen. Mein endgültiger Code sieht so aus:
%Vor%Es funktioniert auf Anker und Form-Schaltflächen.
Sie müssen return false;
für Anchor-Tags angeben.
Siehe dieses jsFiddle .
Tags und Links javascript