Hvordan undertrykker jeg “ er du sikker på, at du vil forlade denne side ” popup fra bidragssiden

Hvor kunne jeg undertrykke popupen “er du sikker på, at du vil forlade denne side”, når jeg forlader en bidrageside (f.eks. donation) uden faktisk at fortsætte med bidraget. Jeg er klar over, at det kan være der for at forhindre, at man ved et uheld forlader siden midtvejs ved at udfylde formularen, men jeg synes faktisk, det er mere irriterende end nyttigt i den brøkdel af tilfældige tilfælde. Jeg har også et Facebook-login på siden, som , når den bruges, tvinger siden til at genindlæse og påkalder således pop op-pop op “forlad denne side”. Dette er forvirrende for brugeren, som ikke ville vide, at de har brug for at trykke på “forlad denne side” -knappen for at blive logget ind (ikke at nævne, at de “faktisk bliver på siden, deraf forvirringen).

Dette er på Joomla (3.4.4 w / CiviCRM 4.6.9)

Jeg antager der “er en onbeforeunload -funktion – en vises i /administrator/components/com_civicrm/civicrm/js/Common.js

Advarslen vises, selv når brugeren ikke har lavede nogen poster på formularen. Bør ikke advarslen kun dukke op, når de gør det?

Tak for eventuelle markører.

Kommentarer

  • OK, så kommenter ' før uindlæsning ' -funktionen i filen, jeg nævnte ovenfor, fjerner helt sikkert popupen, men den måde, jeg virkelig skulle have stillet spørgsmålet på, er, hvordan kunne vi kun påkalde funktionen, når noget indtastes / vælges i formularen på siden. Fordi det i så fald ' er nyttigt.
  • Jeg ' d observerede denne adfærd en eller to gange for nylig den 4.6 websteder, tror jeg, vil tage et øjeblik at undersøge det, hvis jeg ser det igen. Det er ret generende, men da det ville have været tilfældet, når man indsendte eller genindlæste, lige havde ramt ESC eller hvad som helst får det til at gå væk ASAP: D

Svar

CiviCRM bruger jQuery til at se formularindgange og give kun en advarsel, hvis der ikke er gemte ændringer. Du finder koden til den i Common.js . Når jeg prøver en prøvebidragsside på demoserveren, ser det ud til at fungere korrekt; hvis jeg åbn en bidragsside , indtast intet og luk fanen, jeg får ingen advarsel. Men hvis jeg indtaster et beløb og derefter prøver at lade det dukker op, vises meddelelsen før .

Hvis du “er klar til det, fejler du CRM.utils.initialValueChanged -funktionen for at finde ud af hvorfor civi mener, at formularen er blevet ændret, når det har ikke været nyttig feedback for os med at forbedre softwaren.

Eller du kan bare tilføje et lille javascript til din FB login-knap. Hvis den eksisterende markering ligner <button type="submit"> så kan du tilføje det, så det ser ud til at <button type="submit" onclick="window.onbeforeunload = null;">

Men seriøst ville fejlfindingsfeedback være nyttig.

Kommentarer

  • Tak, Coleman, for informationen. Jeg ' er ikke meget af en udvikler, men vil se ud til hvorfor Civi mener, at noget er blevet ændret på formularen og poste her for andre (og for Civi-teamet).
  • Bare gætte – er det muligt, at browser automatisk udfyldning indsætter noget i formularen?

Svar

Dette sker, når den indbyggede profil til brugerregistrering (“Navn og adresse” er ud- of-the-box title) bruges på bidragssiden. Byt det til en anden profil, og pop op-vinduet vises ikke. Replikerede dette på Joomla CiviCRM demo-webstedet.

Kommentarer

  • Det ville være godt at indsnævre det til det bestemte felt i den profil, der forårsager det .
  • Tak fordi du bedt om afklaringen, Coleman. Det ' er ikke et af felterne – jeg brugte alle de samme i en ny profil, der ' ikke er den indbyggede en til brugerregistrering, og den fungerer perfekt.
  • at ' s … underlig.
  • I ' får denne fejl ved hjælp af en anden profil

Svar

Hvis det er” s brug for andre: Jeg ville gerne markere afkrydsningsfeltet for tilbagevendende donationer (“Jeg vil bidrage med dette beløb hver måned”) som standard (markeret) på en bestemt donationsformular. Jeg brugte følgende brugerdefinerede javascript til at gøre det.

Efter at værdien var indstillet til “kontrolleret” i javascript, var .data("crm-initial-value", true) -koden nødvendig for at forhindre CiviCRM i at klage over ikke-gemte ændringer, når de navigerede til en anden side.

<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> 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *