Wo kann ich das Popup „Sind Sie sicher, dass Sie diese Seite verlassen möchten?“ unterdrücken, wenn Sie eine Beitragsseite verlassen (z. B. eine Spende), ohne den Beitrag tatsächlich auszuführen. Mir ist klar, dass es möglicherweise dazu dient, das versehentliche Verlassen der Seite auf halbem Weg durch das Ausfüllen des Formulars zu verhindern, aber ich denke tatsächlich, dass es in Bruchteilen von versehentlichen Fällen eher ärgerlich als hilfreich ist. Außerdem habe ich ein Facebook-Login auf der Seite, das Bei Verwendung wird die Seite zum erneuten Laden gezwungen und das Popup „Diese Seite verlassen“ aufgerufen. Dies ist verwirrend für den Benutzer, der nicht wissen möchte, dass er auf die Schaltfläche „Diese Seite verlassen“ klicken muss, um sich anzumelden (nicht) um zu erwähnen, dass sie tatsächlich auf der Seite bleiben, daher die Verwirrung).
Dies ist auf Joomla (3.4.4 mit CiviCRM 4.6.9).
Ich gehe davon aus, dass es dort ist „s an onbeforeunload
-Funktion – eine wird in /administrator/components/com_civicrm/civicrm/js/Common.js
angezeigt. Die Warnung wird auch dann angezeigt, wenn der Benutzer dies nicht getan hat hat keine Einträge im Formular vorgenommen. Sollte die Warnung nicht nur dann angezeigt werden, wenn sie angezeigt wird?
Vielen Dank für Hinweise.
Kommentare
- OK, also kommentieren Sie die ' onbeforeunload aus ' -Funktion in der oben erwähnten Datei entfernt definitiv das Popup, aber ich hätte die Frage wirklich stellen sollen, wie wir die Funktion nur aufrufen können, wenn etwas in das Formular eingegeben / ausgewählt wird auf der Seite. Weil es in diesem Fall ' nützlich ist.
- Ich ' hatte dieses Verhalten in letzter Zeit ein- oder zweimal am 4.6 beobachtet Websites, von denen ich denke, dass sie einen Moment brauchen, um sie zu untersuchen, wenn ich sie wieder sehe. Es ist ein bisschen lästig, aber da es beim Senden oder Nachladen passiert wäre, hätte ich gerade ESC getroffen oder was auch immer es so schnell wie möglich verschwinden lässt: D
Antwort
CiviCRM verwendet jQuery, um Formulareingaben zu überwachen und nur dann eine Warnung auszugeben, wenn nicht gespeicherte Änderungen vorliegen. Den Code dafür finden Sie in Common.js . Wenn ich eine Beispielbeitragsseite auf dem Demoserver ausprobiere, scheint sie korrekt zu funktionieren Öffnen Sie eine Beitragsseite , geben Sie nichts ein und schließen Sie die Registerkarte. Ich erhalte keine Warnung. Wenn ich jedoch einen Betrag eingebe und dann versuche, ihn zu belassen, wird die Meldung onbeforeunload angezeigt .
Wenn Sie bereit sind, debuggen Sie die Funktion CRM.utils.initialValueChanged
, um herauszufinden, warum civi glaubt, dass das Formular wann geändert wurde Es wäre kein hilfreiches Feedback für uns, die Software zu verbessern.
Oder Sie könnten einfach ein wenig Javascript zu Ihrer FB-Anmeldeschaltfläche hinzufügen. Wenn das vorhandene Markup wie folgt aussieht: <button type="submit">
dann könnten Sie es hinzufügen, so dass es aussieht wie <button type="submit" onclick="window.onbeforeunload = null;">
Aber im Ernst, das Feedback zum Debuggen wäre hilfreich.
Kommentare
- Vielen Dank, Coleman, für die Info. Ich ' bin kein großer Entwickler, werde aber schauen Warum Civi glaubt, dass etwas am Formular geändert wurde, und hier für andere (und für das Civi-Team) posten.
- Nur raten – ist es möglich, dass das automatische Ausfüllen des Browsers etwas in das Formular einfügt?
Antwort
Dies geschieht, wenn das integrierte Profil für die Benutzerregistrierung („Name und Adresse“ ist das Out- of-the-box-Titel) wird auf der Beitragsseite verwendet. Tauschen Sie es gegen ein anderes Profil aus, und das Popup wird nicht angezeigt. Replizierte dies auf der Joomla CiviCRM-Demoseite.
Kommentare
- Es wäre gut, es auf das bestimmte Feld in dem Profil einzugrenzen, das es verursacht
- Vielen Dank für die Aufforderung zur Klärung, Coleman. Es ist ' keines der Felder – ich habe dieselben in einem neuen Profil verwendet, das ' nicht integriert ist eine für die Benutzerregistrierung, und sie funktioniert einwandfrei.
- dass ' … seltsam ist.
- I ' Ich erhalte diesen Fehler mit einem anderen Profil.
Antwort
Falls dies der Fall ist von Nutzen für andere: Ich wollte das Kontrollkästchen für wiederkehrende Spenden („Ich möchte diesen Betrag jeden Monat einbringen“) standardmäßig auf einem bestimmten Spendenformular aktivieren (aktiviert). Ich habe das folgende benutzerdefinierte Javascript verwendet, um dies zu tun.
Nachdem der Wert in Javascript auf „markiert“ gesetzt wurde, war der Code .data("crm-initial-value", true)
erforderlich, um zu verhindern, dass sich CiviCRM beim Navigieren zu einer anderen Seite über nicht gespeicherte Änderungen beschwert.
<script> CRM.$(function($) { // make recurring contribution checkbox true by default var r = $("#is_recur"); if (!r.length) { return; } r.attr("checked", "checked"); r.prop("defaultChecked", true); r.prop("checked", true); // necessary to tell Civi the default value has changed r.data("crm-initial-value", true); </script>