Como suprimo o “ tem certeza de que deseja sair desta página ” pop-up da página de contribuição

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> 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *