2010-08-22 182 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。