Onde eu poderia suprimir o pop-up “tem certeza de que deseja sair desta página” ao sair de uma página de contribuição (por exemplo, doação) sem realmente prosseguir com a contribuição. Sei que pode ser usado para evitar que você saia acidentalmente da página no meio do preenchimento do formulário, mas na verdade acho que é mais irritante do que útil na fração de casos acidentais. Além disso, tenho um login do Facebook na página, que , quando utilizado, força a página a recarregar e, portanto, invoca o pop-up “sair desta página”. Isso é confuso para o usuário que não saberia que precisa clicar no botão “sair desta página” para fazer o login (não para mencionar que eles “permanecerão na página, daí a confusão).
Isso está no Joomla (3.4.4 com CiviCRM 4.6.9)
Estou assumindo que há “s an onbeforeunload
função – aparece em /administrator/components/com_civicrm/civicrm/js/Common.js
O aviso aparece mesmo quando o usuário não fez alguma entrada no formulário. O aviso não deveria aparecer apenas quando eles aparecem?
Obrigado por quaisquer dicas.
Comentários
- OK, comentando o ' onbeforeunload ' função no arquivo que mencionei acima definitivamente remove o pop-up, mas a maneira que eu realmente deveria ter feito a pergunta é como poderíamos invocar a função apenas quando algo é inserido / selecionado no formulário na página. Porque, nesse caso, ' é útil.
- Eu ' d observei esse comportamento uma ou duas vezes recentemente no 4.6 sites, eu acho, levarei um momento para analisá-lo se eu o vir novamente. É meio incômodo, mas já que estaria acontecendo ao enviar ou recarregar, basta apertar ESC ou o que quer que faça isso desaparecer o mais rápido possível: D
Resposta
CiviCRM usa jQuery para observar as entradas do formulário e dar um aviso apenas se houver alterações não salvas. Você encontrará o código para ele em Common.js . Quando tento uma página de contribuição de amostra no servidor de demonstração, ela parece estar funcionando corretamente; se eu abrir uma página de contribuição , não inserir nada e fechar a guia, não recebo nenhum aviso. Mas se eu inserir um valor e tentar deixá-lo, aparece a mensagem onbeforeunload .
Se você “quiser, depure a função CRM.utils.initialValueChanged
para descobrir por que civi pensa que o formulário foi alterado quando não seria um feedback útil para melhorarmos o software.
Ou você poderia apenas adicionar um pouco de javascript ao botão de login do FB. Se a marcação existente for semelhante a <button type="submit">
então você poderia adicionar a ele de forma que pareça <button type="submit" onclick="window.onbeforeunload = null;">
Mas, falando sério, o feedback de depuração seria útil.
Comentários
- Obrigado, Coleman, pela informação. Eu ' não sou muito de um desenvolvedor, mas vou parecer para saber por que Civi acha que algo foi alterado no formulário e poste aqui para outras pessoas (e para a equipe Civi).
- Apenas adivinhando – é possível que o preenchimento automático do navegador insira algo no formulário?
Resposta
Isso acontece quando o perfil integrado para registro do usuário (“Nome e Endereço” é o out- título pronto para uso) é usado na página de contribuição. Troque-o por outro perfil e o pop-up não aparecerá. Replicado no site de demonstração do Joomla CiviCRM.
Comentários
- Seria bom restringir ao campo específico daquele perfil que está causando isso .
- Obrigado por solicitar o esclarecimento, Coleman. Não ' não é nenhum dos campos – usei todos os mesmos em um novo perfil que ' não é o integrado um para registro do usuário e funciona perfeitamente.
- que ' é … estranho.
- Eu ' Estou recebendo este erro usando um perfil diferente
Resposta
Caso seja útil para os outros: Eu queria tornar a caixa de seleção de doação recorrente (“Eu quero contribuir com essa quantia todos os meses”) verdadeira (marcada) por padrão em um formulário de doação específico. Usei o seguinte javascript personalizado para fazer isso.
Depois de definir o valor como “verificado” em javascript, o código .data("crm-initial-value", true)
foi necessário para evitar que o CiviCRM reclamasse de alterações não salvas ao navegar para uma página diferente.
<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>