Hvor kan jeg undertrykke popup-en «er du sikker på at du vil forlate denne siden» når du forlater en bidragsside (f.eks. donasjon) uten å faktisk fortsette med bidraget. Jeg innser at det kan være der for å forhindre at du legger ut siden ved et uhell midtveis gjennom å fylle ut skjemaet, men jeg synes faktisk det er mer irriterende enn nyttig i den delen av tilfeldige tilfeller. Jeg har også en Facebook-innlogging på siden, som , når den brukes, tvinger siden til å lastes inn på nytt og påkaller dermed popup-vinduet «forlat denne siden». Dette er forvirrende for brukeren som ikke vet at de trenger å trykke på «la denne siden» -knappen for å bli logget inn (ikke for å nevne at de «faktisk vil være på siden, derav forvirringen).
Dette er på Joomla (3.4.4 w / CiviCRM 4.6.9)
Jeg antar der «er en onbeforeunload
-funksjon – en vises i /administrator/components/com_civicrm/civicrm/js/Common.js
Advarselen vises selv når brukeren ikke har gjorde noen oppføringer i skjemaet. Skal ikke advarselen dukke opp bare når de gjør det?
Takk for eventuelle pekere.
Kommentarer
- OK, så kommenter ' før du laster ' -funksjonen i filen jeg nevnte ovenfor fjerner definitivt popupen, men måten jeg egentlig burde stilt spørsmålet på, er hvordan vi bare kan påkalle funksjonen når noe er skrevet inn / valgt i skjemaet på siden. Fordi det i så fall ' er nyttig.
- Jeg ' d observerte denne oppførselen en eller to ganger i det siste den 4.6 nettsteder tror jeg vil ta et øyeblikk å se på det hvis jeg ser det igjen. Det er ganske plagsomt, men siden det hadde skjedd når du sendte inn eller lastet inn, hadde nettopp truffet ESC eller hva som helst som gjør at det forsvinner ASAP: D
Svar
CiviCRM bruker jQuery til å se på skjemainnganger og gi bare en advarsel hvis det ikke er lagrede endringer. Du finner koden for den i Common.js . Når jeg prøver en eksempler på bidragssiden på demoserveren, ser det ut til å fungere riktig. Hvis jeg åpne en bidragsside , skriv ingenting og lukk fanen, jeg får ingen advarsel. Men hvis jeg skriver inn et beløp og deretter prøver å la det dukke opp, vises meldingen før .
Hvis du «er klar for det, feilsøker du CRM.utils.initialValueChanged
-funksjonen for å finne ut hvorfor civi mener skjemaet er endret når det har ikke vært nyttig tilbakemelding for oss å forbedre programvaren.
Eller du kan bare legge til et lite javascript til FB-påloggingsknappen din. Hvis den eksisterende markeringen ser ut som <button type="submit">
så kan du legge til det så det ser ut til at <button type="submit" onclick="window.onbeforeunload = null;">
Men seriøst vil feilsøkingstilbakemeldingen være nyttig.
Kommentarer
- Tusen takk, Coleman, for informasjonen. Jeg ' er ikke veldig utvikler, men vil se ut inn i hvorfor Civi mener noe er endret på skjemaet og legge ut her for andre (og for Civi-teamet).
- Bare gjetting – er det mulig nettleserautofyll setter inn noe i skjemaet?
Svar
Dette skjer når den innebygde profilen for brukerregistrering («Navn og adresse» er ut- of-the-box title) brukes på bidragssiden. Bytt den mot en annen profil, så vises ikke popup-vinduet. Replikerte dette på Joomla CiviCRM demoside.
Kommentarer
- Ville være greit å begrense det til det bestemte feltet i den profilen som forårsaker det .
- Takk for at du ba om avklaring, Coleman. Det ' er ikke noe av feltene – jeg brukte alle de samme i en ny profil som ' ikke er den innebygde en for brukerregistrering, og den fungerer perfekt.
- at ' s … rare.
- I ' får denne feilen ved hjelp av en annen profil
Svar
I tilfelle det er av bruk til andre: Jeg ønsket å merke avkrysningsruten for gjentakende donasjoner («Jeg vil bidra med dette beløpet hver måned») som standard (merket) på et bestemt donasjonsskjema. Jeg brukte følgende tilpassede javascript for å gjøre det.
Etter å ha satt verdien til «avkrysset» i javascript, var .data("crm-initial-value", true)
-koden nødvendig for å forhindre at CiviCRM klaget over ikke-lagrede endringer når du navigerer til en annen 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>