2010-08-22 208 views
6

我一直在将MailChimp整合到我正在设计的网站中,将AWFUL时间最长。MailChimp jQuery冲突

问题是验证不适用于嵌入式订阅表单。而不是内联错误消息,表单正在踢用户到MailChimp注册页面来更正错误或确认列表选择英寸

我已经做了大量的代码定制,所以不幸回到了默认不是一个选项。

下面是我得到的错误,但我是一个JS的n00b,所以我不知道他们的意思:

上的错误mce_jQuery中断没有定义:

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

我不认为这是一个可以通过控制台捕获的错误。

奇怪的是这个。如果我撕掉自定义代码,只是从MailChimp发布静态代码,它会以某种方式工作,但我已将所有相关代码复制到重要函数中,并且仍然没有骰子。

您可以查看站点住在:http://ranya.net/wp/contact

的MailChimp列表注册在右上角的下拉菜单滑动。相关脚本嵌入在div#top_mailing之后。

回答

1

亚历克智能的回答几乎是正确的。通过以NoConflict模式运行jQuery,问题已解决。亚历克建议我添加jQuery.noConflict();在文件的标题中。事实证明,MailChimp嵌入代码中有一行被注释掉了。为了正确启用对MailChimp脚本搜索noConflict模式

//var mce_jQuery = jQuery.noConflict(); 

删除注释,以便它看起来像这样

var mce_jQuery = jQuery.noConflict(); 

,然后你要善于去! :)

1

尝试在上面移动此代码的权利(如后立即<head>标签):

<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

好的尝试,但没有,移动后,它仍然没有做内联验证:( – Brian 2010-08-22 09:10:37

+0

你正在你的代码中加载2个版本的jQuery。你确定要这样做? – 2010-08-22 18:54:27

+0

你几乎是正确的亚历克!看到我的答案下面的决议:) – Brian 2010-08-22 19:18:30

3

或者你可以简单地仅仅在mailChimp.js重命名这个变量:

var mce_jQuery = jQuery.noConflict(); 

var mce_jQuery = jQuery; 

不知道为什么MailChimp开发商决定重写美元符号用一种方法。

2

使用jQuery 1.8.1和最新的mailchimp代码28日2013年5月

我找不到上述注释取消注释。

我能看到但是这mailchimp代码:

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

我的这种认识是不是很大,但这种重新分配默认的jQuery $变量。

然而,在后面的代码有这样的:

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

这是跳闸mailchimp代码了

我改成了

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

和它的作品。不太清楚为什么(并且会喜欢解释!),但是我认为我会发布,因为有人可能会像我一样,遇到这个问题。

+0

您的解决方案为我工作。 – Anthony 2013-07-29 18:47:40

+0

太棒了!很高兴帮助 – user1010892 2013-07-30 19:06:56

+0

您是否在新行上添加了一个右括号“jQuery(document).ready(function($){''?如果是这样,在哪? – novicePrgrmr 2013-09-11 04:27:16

2

我没有任何上述解决方案的运气,可能是因为最后一个答案已超过一年,并且不再反映当前的mailchimp代码。

为了解决我的jQuery冲突,我复制了mc-validate.js脚本,MailChimp服务于http://s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js并将它放在我们自己的服务器上。然后,我美化了它,并从文件中删除了jquery代码。这样,现在只有我们的服务器上留下了我们的jquery版本,并且没有任何冲突了。

看起来,你也不再需要行var $mcj = jQuery.noConflict(true);了。

@mailchimp:这个问题的一个很好的解决方案是如果你可以在你的亚马逊服务器上提供不同版本的代码,它不包括jQuery。