2010-08-22 25 views
6

¡He estado teniendo el peor tiempo integrando MailChimp en un sitio que estoy diseñando!MailChimp jQuery Conflict

El problema es que la validación no funciona para el formulario de suscripción incrustado. En lugar de incluir mensajes de error, el formulario está expulsando al usuario a la página de registro de MailChimp para corregir errores o confirmar la opción de suscripción.

He hecho una gran cantidad de personalización del código, por lo que desafortunadamente volví al el predeterminado no es una opción.

Éstos son los errores que estoy recibiendo, pero yo soy un n00b JS, así que no sé lo que significan:

rotura en caso de error mce_jQuery no está definido:

Screen shot 2010-08-22 at 4.34.50 AM.jpg

No creo que sea un error que pueda ser atrapado con la consola.

Lo raro es esto. Si arranco el código personalizado y simplemente publico el código estático de MailChimp, de alguna manera funciona, pero he copiado todo el código relevante con funciones importantes y aún no hay dados.

Usted puede ver el sitio en vivo en: http://ranya.net/wp/contact

La lista de registro MailChimp se encuentra en la parte superior desplegable deslizamiento esquina derecha. Los scripts relevantes se incrustan justo después de div # top_mailing.

Respuesta

1

Alec inteligente era casi correcto. Al ejecutar jQuery en modo NoConflict, se resolvió el problema. Alec sugirió que añadiera jQuery.noConflict(); en el encabezado del documento. Resulta que hay una línea en el código incrustado de MailChimp que está comentada. A fin de permitir adecuadamente el modo noConflict para la búsqueda de secuencia de comandos para MailChimp

//var mce_jQuery = jQuery.noConflict(); 

Quitar el comentario para que se vea como esto

var mce_jQuery = jQuery.noConflict(); 

y entonces usted debe ser bueno para ir! :)

1

trate de mover el código a la derecha en la parte superior (como inmediatamente después de <head> etiqueta): La respuesta de

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
<script>jQuery.noConflict();</script> 
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.validate.js"></script> 
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.form.js"></script> 
+0

Buen intento, pero no, después de mudarse, todavía no hace la validación en línea :( – Brian

+0

Está cargando 2 versiones de jQuery en su código. ¿Está seguro de que quiere hacer eso? –

+0

Era casi correcto Alec ! Consulte mi respuesta a continuación para la resolución :) – Brian

3

o simplemente puede simplemente cambiar el nombre de esta variable en los mailChimp.js:

var mce_jQuery = jQuery.noConflict(); 

a

var mce_jQuery = jQuery; 

No sé por qué los desarrolladores de MailChimp decidieron volver a escribir el signo de dólar con un método

2

usando jQuery 1.8.1 y el último código MailChimp a partir del 28 de mayo de 2013

no pude encontrar el comentario anterior que se elimine.

Podría sin embargo veo este código MailChimp:

function mce_init_form(){ 
jQuery(document).ready(function($) { 

Mi comprensión de esto no es grande, pero esta re-asigna la variable $ jQuery por defecto.

Sin embargo, más adelante en el código no era la siguiente:

function mce_success_cb(resp){ 
$('#mce-success-response').hide() 

que se dispare el código de MailChimp hasta

lo cambié a

function mce_success_cb(resp){ 
jQuery(document).ready(function($) { 
$('#mce-success-response').hide(); 

y funciona. No estoy muy seguro de por qué (¡y me encantaría una explicación!), Pero pensé en publicar porque alguien podría encontrar esta pregunta de la misma manera que yo.

+0

Su solución funcionó para mí. – Anthony

+0

¡Genial! Me alegro de que haya ayudado – user1010892

+0

Agregaste un corchete de cierre a la nueva línea '' jQuery (documento) .ready (función ($) {''? En caso afirmativo, ¿dónde? – novicePrgrmr

2

No tuve suerte con ninguna de las soluciones anteriores, probablemente porque la última respuesta tiene más de un año de antigüedad y ya no refleja el código de correo actual.

Para resolver mis conflictos jQuery, copié la secuencia de comandos mc-validate.js que MailChimp sirve desde http://s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js y lo puse en nuestro propio servidor. Luego lo embellecí y eliminé el código jquery del archivo. De esa forma, ahora solo queda nuestra versión de jquery en nuestro servidor y ya no hay conflicto.

Como parece, tampoco necesitará la línea var $mcj = jQuery.noConflict(true);.

@mailchimp: una gran solución para este problema sería si pudiera proporcionar una versión diferente del código en sus servidores de Amazon, que no incluye jquery.

Cuestiones relacionadas