Dove posso sopprimere il popup “sei sicuro di voler lasciare questa pagina” quando esco da una pagina di contributo (es. donazione) senza effettivamente procedere con il contributo. Mi rendo conto che potrebbe essere lì per evitare di lasciare la pagina accidentalmente a metà della compilazione del modulo, ma in realtà penso che sia più fastidioso che utile nella frazione di casi accidentali. Inoltre, ho un login Facebook sulla pagina, che , quando viene utilizzato, forza il ricaricamento della pagina e quindi richiama il popup “lascia questa pagina”. Questo crea confusione per lutente che non sa che è necessario premere il pulsante “lascia questa pagina” per accedere (non per dire che “rimarranno effettivamente sulla pagina, da qui la confusione).
Questo è su Joomla (3.4.4 con CiviCRM 4.6.9)
Sto assumendo che ci “è una funzione onbeforeunload
: una appare in /administrator/components/com_civicrm/civicrm/js/Common.js
Lavviso viene visualizzato anche quando lutente non ha ha inserito qualsiasi voce nel modulo. Lavviso non dovrebbe apparire solo quando lo fanno?
Grazie per eventuali suggerimenti.
Commenti
- OK, quindi commentando ' prima del download La funzione ' nel file che ho menzionato sopra rimuove definitivamente il popup ma il modo in cui avrei dovuto porre la domanda è come potremmo invocare la funzione solo quando qualcosa è inserito / selezionato nel modulo sulla pagina. Perché in quel caso ' è utile.
- I ' ho osservato questo comportamento una o due volte ultimamente il 4.6 siti credo, ci vorrà un momento per esaminarlo se lo vedo di nuovo. È un po fastidioso ma dal momento che sarebbe successo durante linvio o il ricaricamento, se avessi appena premuto ESC o qualsiasi altra cosa lo facesse andare via il prima possibile: D
Risposta
CiviCRM utilizza jQuery per controllare gli input del modulo e dare un avviso solo se ci sono modifiche non salvate. Troverai il relativo codice in Common.js . Quando provo una pagina di contributo di esempio sul server demo, sembra che funzioni correttamente; se apri una pagina di contributo , non inserire nulla e chiudo la scheda, non ricevo alcun avviso. Ma se inserisco un importo e provo a lasciarlo, viene visualizzato il messaggio onbeforeunload .
Se sei pronto, esegui il debug della funzione CRM.utils.initialValueChanged
per scoprire perché civi pensa che il modulo sia stato modificato quando non ci sarebbe un feedback utile per migliorare il software.
Oppure potresti semplicemente aggiungere un po di javascript al tuo pulsante di accesso FB. Se il markup esistente è simile a <button type="submit">
allora potresti aggiungerlo in modo che sembri <button type="submit" onclick="window.onbeforeunload = null;">
Ma seriamente, il feedback di debug sarebbe utile.
Commenti
- Grazie, Coleman, per le informazioni. ' non sono proprio uno sviluppatore ma cercherò nel motivo per cui Civi pensa che qualcosa sia stato cambiato nel modulo e pubblica qui per altri (e per il team Civi).
- Sto solo indovinando: è possibile che la compilazione automatica del browser inserisca qualcosa nel modulo?
Risposta
Questo accade quando il profilo integrato per la registrazione dellutente (“Nome e indirizzo” è titolo del riquadro) viene utilizzato nella pagina del contributo. Scambialo con un altro profilo e il popup non viene visualizzato. Replicato questo sul sito demo di Joomla CiviCRM.
Commenti
- Sarebbe bene restringerlo al campo particolare in quel profilo che lo causa .
- Grazie per aver richiesto il chiarimento, Coleman. ' non è nessuno dei campi: ho usato tutti gli stessi in un nuovo profilo che ' non è integrato uno per la registrazione dellutente e funziona perfettamente.
- che ' è … strano.
- I ' sto ottenendo questo errore utilizzando un profilo diverso
Risposta
Nel caso” s utile ad altri: volevo che la casella di controllo della donazione ricorrente (“Voglio contribuire con questo importo ogni mese”) sia vera (selezionata) per impostazione predefinita su un particolare modulo di donazione. Ho usato il seguente javascript personalizzato per farlo.
Dopo aver impostato il valore su “verificato” in javascript, il codice .data("crm-initial-value", true)
era necessario per impedire a CiviCRM di lamentarsi di modifiche non salvate durante la navigazione in una pagina diversa.
<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>