Waar kan ik de pop-up “weet u zeker dat u deze pagina wilt verlaten” onderdrukken wanneer u een contributiepagina verlaat (bijv. donatie) zonder daadwerkelijk verder te gaan met de bijdrage. Ik realiseer me dat het er kan zijn om te voorkomen dat ik de pagina per ongeluk verlaat halverwege het invullen van het formulier, maar ik vind het eigenlijk vervelender dan nuttig in de fractie van toevallige gevallen. Ik heb ook een Facebook-login op de pagina, die , dwingt, wanneer gebruikt, de pagina opnieuw te laden en roept dus de pop-up verlaat deze pagina op. Dit is verwarrend voor de gebruiker die niet zou weten dat ze op de knop deze pagina verlaten moeten klikken om in te loggen (niet om te vermelden dat ze “daadwerkelijk op de pagina blijven, vandaar de verwarring).
Dit is op Joomla (3.4.4 met CiviCRM 4.6.9)
Ik neem aan dat “s an onbeforeunload
functie – er verschijnt een in /administrator/components/com_civicrm/civicrm/js/Common.js
De waarschuwing verschijnt zelfs als de gebruiker dat niet heeft gedaan heeft iets op het formulier ingevuld. Zou de waarschuwing niet alleen moeten verschijnen als ze dat doen?
Bedankt voor alle tips.
Reacties
- OK, dus geef commentaar op de ' onbeforeunload ' functie in het bestand dat ik hierboven noemde, verwijdert definitief de pop-up, maar de manier waarop ik eigenlijk de vraag had moeten stellen is hoe we de functie alleen kunnen aanroepen als er iets is ingevoerd / geselecteerd in het formulier op de pagina. Omdat het in dat geval ' nuttig is.
- Ik ' heb dit gedrag de laatste tijd een of twee keer waargenomen op 4.6 sites, denk ik, zullen even de tijd nemen om ernaar te kijken als ik het opnieuw zie. Het is nogal vervelend, maar aangezien het zou zijn gebeurd bij het indienen of herladen, had je net op ESC gedrukt of wat het ook doet verdwijnen ASAP: D
Antwoord
CiviCRM gebruikt jQuery om formulierinvoer te bekijken en geeft alleen een waarschuwing als er niet-opgeslagen wijzigingen zijn. U vindt de code ervoor in Common.js . Als ik een voorbeeldpagina voor bijdragen op de demoserver probeer, lijkt deze correct te werken; als ik open een contributiepagina , voer niets in en sluit het tabblad, ik krijg geen waarschuwing. Maar als ik een bedrag invul en dan probeer het te laten staan, verschijnt het bericht onbeforeunload .
Als u er klaar voor bent, debugt u de CRM.utils.initialValueChanged
-functie om erachter te komen waarom civi denkt dat het formulier is gewijzigd wanneer het zou geen nuttige feedback zijn voor ons om de software te verbeteren.
Of je kunt gewoon een klein javascript toevoegen aan je FB-inlogknop. Als de bestaande opmaak eruit ziet als <button type="submit">
dan zou je er iets aan kunnen toevoegen zodat het lijkt op <button type="submit" onclick="window.onbeforeunload = null;">
Maar serieus, de feedback over foutopsporing zou nuttig zijn.
Opmerkingen
- Bedankt, Coleman, voor de info. Ik ' ben niet echt een ontwikkelaar, maar ik zal eruit zien in waarom Civi denkt dat er iets is veranderd op het formulier en post dit hier voor anderen (en voor het Civi-team).
- Gewoon gissen – is het mogelijk dat de browser automatisch invult iets in het formulier invoegt?
Antwoord
Dit gebeurt wanneer het ingebouwde profiel voor gebruikersregistratie (“Naam en adres” is het of-the-box titel) wordt gebruikt op de contributiepagina. Verwissel het voor een ander profiel en de pop-up verschijnt niet. Heeft dit gerepliceerd op de Joomla CiviCRM-demosite.
Reacties
- Het zou goed zijn om het te beperken tot het specifieke veld in dat profiel dat het veroorzaakt .
- Bedankt voor het vragen om opheldering, Coleman. Het ' is niet een van de velden – ik heb ze allemaal gebruikt in een nieuw profiel dat ' niet de ingebouwde is een voor gebruikersregistratie, en het werkt perfect.
- dat ' s … raar.
- I ' Ik krijg deze foutmelding met een ander profiel
Antwoord
In het geval dat het nuttig voor anderen: ik wilde het selectievakje voor terugkerende donaties (Ik wil dit bedrag elke maand bijdragen) standaard waar (aangevinkt) maken op een bepaald donatieformulier. Ik heb het volgende aangepaste JavaScript gebruikt om dit te doen.
Na het instellen van de waarde op “gecontroleerd” in javascript, was de .data("crm-initial-value", true)
code nodig om te voorkomen dat CiviCRM klaagde over niet-opgeslagen wijzigingen bij het navigeren naar een andere pagina.
<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>