Foros del Web » Programando para Internet » Javascript » Frameworks JS »

[SOLUCIONADO] Validar formulario OnePage y seguimiento analytics

Estas en el tema de Validar formulario OnePage y seguimiento analytics en el foro de Frameworks JS en Foros del Web. Hola Aviso, no tengo muchos conocimientos de JS. Estoy con un formulario muy sencillito que valida que los campos se hayan cumplimentado. El HTML es ...
  #1 (permalink)  
Antiguo 14/10/2014, 15:20
 
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Validar formulario OnePage y seguimiento analytics

Hola

Aviso, no tengo muchos conocimientos de JS.

Estoy con un formulario muy sencillito que valida que los campos se hayan cumplimentado.

El HTML es el siguiente.

Código HTML:
 <!-- BEGIN CONTACT US CONTAINER -->
				<div class="contact-us no-padding-bottom col-sm-4 col-md-4 fadeInRight" data-delay="50">
						<!-- BEGIN HEADING -->
						<h3 class="text-center">PIDE TU PRESUPUESTO</h3>
						<!-- END HEADING -->
						
						<!-- BEGIN THANK YOU MESSAGE -->
						<div id="contact_message" class="success-msg">Gracias por contactar.</div>
						<!-- END THANK YOU MESSAGE -->
						
						<div class="form">
						<!-- BEGIN FORM -->
						<form id="contact_form" method="post" onSubmit="return false">
						<div class="row">
							<div class="col-md-6">
								<input id="name" class="form-control" type="text" required="" placeholder="Nombre" name="name">
							</div>
							<div class="col-md-6">
								<input id="email" class="form-control" type="text" required="" placeholder="Email" name="email">
							</div>
						</div>
						<div class="row">
							<div class="col-md-6">
								<input id="company" class="form-control" type="text" required="" placeholder="Empresa" name="company">
							</div>
							<div class="col-md-6">
								<input id="website" class="form-control" type="text" required="" placeholder="Web" name="website">
							</div>
						</div>
						<div class="row">
							<div class="col-md-12">
								<div class="message">
									<textarea id="message" class="form-control" required="" placeholder="Cuéntanos más sobre tu proyecto..." rows="6" name="message"></textarea>
									<input type="submit" value="Enviar" class="btn btn-orange" id="btn_submit" onClick="proceed();">
								</div>
							</div>
						</div>
						</form>
						<!-- END FORM -->
						</div>
					<div class="clearfix"></div>
				 </div>
				<!-- END CONTACT US CONTAINER --> 
El Javascript es esto de aquí.

Código PHP:
              function proceed(){
                 var 
name document.getElementById("name");
                 var 
email document.getElementById("email");
                 var 
company document.getElementById("company");
                 var 
web document.getElementById("website");
                 var 
msg document.getElementById("message");
                 var 
errors "";
                 
                 if(
name.value == "")
                  { 
                  
name.className 'error';
                    return 
false;
                  }
                    
                  else if(
email.value == "")
                  {
                    
email.className 'error';
                    return 
false;
                  }
                  else if(
checkmail(email.value)==false)
                  {
                    
alert('Introduce un email válido.');
                    return 
false;
            
                  }
                  else if(
company.value == "")
                  {
                    
company.className 'error';
                    return 
false;
                  }
                    else if(
web.value == "")
                  {
                    
web.className 'error';
                    return 
false;
                  }
                  else if(
msg.value == "")
                  {
                    
msg.className 'error';
                    return 
false;
                  }
                  else 
                    {
                            $.
ajax({
                                
type"POST",
                                
url"process.php",
                                
data: $("#contact_form").serialize(),
                                
success: function(msg)
                                {
                                    
//alert(msg);
                                    
if(msg){
                                    $(
'#contact_form').fadeOut(1000);
                                    $(
'#contact_message').fadeIn(2000);
                                    
document.getElementById("contact_message").innerHTML "El email ha sido enviado.";
                                    return 
true;
                                    }
                                }
                            });
                    } 
              } 
El tema es que quiero trackear con analytics el envio de este formulario, al no tener una ventana de confirmación la idea es hacerlo con eventos.

Una opción es añadir el seguimiento del evento en el onclick o no sé si tambien puedo colocar un onsubmit y poner el seguimiento que sería el siguiente
Código:
_gaq.push(['_trackEvent','formulario_contacto','enviar','ok']);
El handicap de colocarlo en el onclick o en el onsubmit si es posible, es que puede trackear cada click aunque el formulario no esté correctamente formulado, con lo que perderíamos la realidad de los formularios enviados.

Me gustaría saber si hay alguna forma de colocarl y activar el seguimiento dentro de la función proceed() y claro está debería de ser en el último if justo después de activar el mensaje de El email ha sido enviado.

¿Como podría ejecutar ese código aquí dentro?
Código PHP:
                  else 
                    {
                            $.
ajax({
                                
type"POST",
                                
url"process.php",
                                
data: $("#contact_form").serialize(),
                                
success: function(msg)
                                {
                                    
//alert(msg);
                                    
if(msg){
                                    $(
'#contact_form').fadeOut(1000);
                                    $(
'#contact_message').fadeIn(2000);
                                    
document.getElementById("contact_message").innerHTML "El email ha sido enviado.";

***
PONDRIA EL CODIGO AQUÍ*** ¿¿¿¿COMO LO HAGO???
                                    return 
true;
                                    }
                                }
                            });
                    } 
              } 
  #2 (permalink)  
Antiguo 16/10/2014, 04:50
 
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Validar formulario OnePage y seguimiento analytics

Me respondo a mí mismo

El código que quería va donde comentaba.

Código HTML:
				  else 
					{
							$.ajax({
								type: "POST",
								url: "process.php",
								data: $("#contact_form").serialize(),
								success: function(msg)
								{
									//alert(msg);
									if(msg){
									$('.form').fadeOut(1000);
									$('#contact_message').fadeIn(1500);
									document.getElementById("contact_message").innerHTML = "El email ha sido enviado.";
									_gaq.push(['_trackEvent','formulario_contacto','enviado','ok']);
									return true;
									}
								}
							});
					}
El fallo era que me había olvidado de incluir el código de Trackevents de analytics.

Que para el seguimiento de la web y los eventos se necesita el siguiente código.

Código PHP:
<script>
(function(
i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(
i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(
window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create''UA-XXXXXXXX-X''auto'); // CAMBIAR LAS X POR TU ID DE SEGUIMIENTO
ga('send''pageview');

var 
_gaq _gaq || [];
_gaq.push(['_setAccount''UA-XXXXXXXX-X']); // CAMBIAR LAS X POR TU ID DE SEGUIMIENTO
_gaq.push(['_trackPageview']);

(function() {
var 
ga document.createElement('script'); ga.type 'text/javascript'ga.async true;
ga.src = ('https:' == document.location.protocol 'https://ssl' 'http://www') + '.google-analytics.com/ga.js';
var 
document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gas);
})();
</script> 
SOLUCIONADO
  #3 (permalink)  
Antiguo 10/12/2014, 10:07
 
Fecha de Ingreso: septiembre-2014
Ubicación: A Coruña
Mensajes: 1
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Validar formulario OnePage y seguimiento analytics

Hola!

Me ha servido de mucho tu tema sobre como hacer seguimiento de eventos en un formulario, pero en el último fragmento de código que pones has juntado los 2 códigos de seguimiento de Google Analytics: Classic Analytics y Universal Analytics. De esta forma me temo que contarías tus visitas dobles:

Código Javascript:
Ver original
  1. <!-- comienzo código Universal Analytics
  2. <script>
  3. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  4. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  5. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  6. })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  7.  
  8. ga('create', 'UA-XXXXXXXX-X', 'auto'); // CAMBIAR LAS X POR TU ID DE SEGUIMIENTO
  9. ga('send', 'pageview');
  10. </script>
  11. <!-- fin código Universal Analytics
  12.  
  13. <!-- comienzo código Classic Analytics
  14. <script>
  15. var _gaq = _gaq || [];
  16. _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']); // CAMBIAR LAS X POR TU ID DE SEGUIMIENTO
  17. _gaq.push(['_trackPageview']);
  18.  
  19. (function() {
  20. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  21. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  22. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  23. })();
  24. </script>  
  25. <!-- fin código Classic Analytics

El código de seguimiento que insertas es para Classic Analytics:

Código Javascript:
Ver original
  1. _gaq.push(['_trackEvent','formulario_contacto','enviado','ok']);

El código de seguimiento para Universal Analytics equivalente sería algo así:

Código Javascript:
Ver original
  1. ga('send', 'event', 'formulario_contacto', 'enviado', 'ok');

Saludos!!!

Etiquetas: ajax, analytics, formulario, html, input, javascript, js, php, seguimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:00.