¿Dónde podría suprimir la ventana emergente «¿está seguro de que desea salir de esta página?» al salir de una página de contribución (por ejemplo, donación) sin proceder realmente con la contribución. Me doy cuenta de que puede estar ahí para evitar que la página se salga accidentalmente a la mitad de completar el formulario, pero en realidad creo que es más molesto que útil en la fracción de casos accidentales. Además, tengo un inicio de sesión de Facebook en la página, que , cuando se utiliza, obliga a la página a recargarse y, por lo tanto, invoca la ventana emergente «dejar esta página». Esto confunde al usuario que no sabría que debe presionar el botón «salir de esta página» para iniciar sesión (no para mencionar que realmente permanecerán en la página, de ahí la confusión).
Esto está en Joomla (3.4.4 con CiviCRM 4.6.9)
Supongo que «es una función onbeforeunload
: aparece una en /administrator/components/com_civicrm/civicrm/js/Common.js
La advertencia aparece incluso cuando el usuario no hizo alguna entrada en el formulario. ¿No debería aparecer la advertencia solo cuando lo hacen?
Gracias por cualquier sugerencia.
Comentarios
- De acuerdo, comentando ' antes de descargar La función ' en el archivo que mencioné anteriormente definitivamente elimina la ventana emergente, pero la forma en que realmente debería haber preguntado es cómo podríamos invocar la función solo cuando se ingresa / selecciona algo en el formulario en la pagina. Porque en ese caso ' s útil.
- Yo ' he observado este comportamiento una o dos veces últimamente en 4.6 Creo que me tomará un momento examinarlo si lo veo de nuevo. Es un poco molesto, pero desde que hubiera estado sucediendo al enviar o recargar, solo había estado presionando ESC o lo que sea que lo haga desaparecer lo antes posible: D
Responder
CiviCRM usa jQuery para observar las entradas de los formularios y dar una advertencia solo si hay cambios no guardados. Encontrarás el código en Common.js . Cuando pruebo una página de contribución de muestra en el servidor de demostración, parece que funciona correctamente; si abrir una página de contribución , no ingresar nada y cerrar la pestaña, no recibo ninguna advertencia. Pero si ingreso una cantidad y luego trato de dejarla, aparece el mensaje onbeforeunload .
Si está preparado para ello, depure la función CRM.utils.initialValueChanged
para averiguar por qué civi cree que se ha cambiado el formulario cuando No nos ha sido útil recibir comentarios para mejorar el software.
O simplemente podría agregar un poco de javascript a su botón de inicio de sesión de FB. Si el marcado existente se parece a <button type="submit">
entonces podrías agregarle para que se vea como <button type="submit" onclick="window.onbeforeunload = null;">
Pero en serio, los comentarios de depuración serían útiles.
Comentarios
- Gracias, Coleman, por la información. Yo ' no soy muy desarrollador, pero buscaré sobre por qué Civi cree que se ha cambiado algo en el formulario y publicar aquí para otros (y para el equipo de Civi).
- Solo adivino: ¿es posible que el autocompletado del navegador inserte algo en el formulario?
Responder
Esto sucede cuando el perfil integrado para el registro de usuario («Nombre y dirección» es la salida título de la caja) se utiliza en la página de contribución. Cámbielo por otro perfil y la ventana emergente no aparecerá. Replicó esto en el sitio de demostración de Joomla CiviCRM.
Comentarios
- Sería bueno limitarlo al campo particular en ese perfil que lo está causando .
- Gracias por solicitar la aclaración, Coleman. ' no es uno de los campos. Usé todos los mismos en un nuevo perfil que ' no es el integrado uno para el registro del usuario, y funciona perfectamente.
- que ' s … raro.
- I ' obtengo este error usando un perfil diferente
Responder
En caso de que» s de utilidad para otros: quería hacer que la casilla de verificación de donación recurrente («Quiero contribuir con esta cantidad todos los meses») sea verdadera (marcada) de forma predeterminada en un formulario de donación en particular. Usé el siguiente javascript personalizado para hacerlo.
Después de establecer el valor en «comprobado» en javascript, el código .data("crm-initial-value", true)
era necesario para evitar que CiviCRM se quejara de los cambios no guardados al navegar a una 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>