2012-03-12 456 views
0

我试图在我的Joomla网站上嵌入Mailchimp订阅表单。但是,它与我的'Gavick PhotoSlide GK2'相冲突。为了防止发生这种情况,我需要使用'裸形式(无CSS或JavaScript)'。这将在订阅时将用户打勾到MailChimp注册页面。但是是否有可能验证内联工作,而不是与我的滑块冲突?这是代码:Mailchimp验证与Joomla滑块冲突

<!-- Begin MailChimp Signup Form --> 
<link href="http://cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css" /> 
<style type="text/css"><!-- 
    #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } 
    /* Add your own MailChimp form style overrides in your site stylesheet or in this style block. 
     We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */ 
--></style> 
<div id="mc_embed_signup"><form action="http://thetrustsstadium.us4.list-manage1.com/subscribe/post?u=xxx&amp;id=xxx" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"> 
<div class="indicates-required"><span class="asterisk">*</span> indicates required</div> 
<div class="mc-field-group"><label for="mce-EMAIL">Email Address <span class="asterisk">*</span> </label> <input name="EMAIL" class="required email" id="mce-EMAIL" type="email" /></div> 
<div class="mc-field-group"><label for="mce-FNAME">First Name <span class="asterisk">*</span> </label> <input name="FNAME" class="required" id="mce-FNAME" type="text" /></div> 
<div class="mc-field-group"><label for="mce-LNAME">Last Name <span class="asterisk">*</span> </label> <input name="LNAME" class="required" id="mce-LNAME" type="text" /></div> 
<div id="mce-responses" class="clear"> 
<div class="response" id="mce-error-response" style="display:none"></div> 
<div class="response" id="mce-success-response" style="display:none"></div> 
</div> 
<div class="clear"><input value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button" type="submit" /></div> 
</form></div> 

<script type="text/javascript"><!-- 
var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text'; 
try { 
    var jqueryLoaded=jQuery; 
    jqueryLoaded=true; 
} catch(err) { 
    var jqueryLoaded=false; 
} 
var head= document.getElementsByTagName('head')[0]; 
if (!jqueryLoaded) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'; 
    head.appendChild(script); 
    if (script.readyState && script.onload!==null){ 
     script.onreadystatechange= function() { 
       if (this.readyState == 'complete') mce_preload_check(); 
     }  
    } 
} 



var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js'; 
head.appendChild(script); 


var err_style = ''; 
try{ 
    err_style = mc_custom_error_style; 
} catch(e){ 
    err_style = '#mc_embed_signup input.mce_inline_error{border-color:#6B0505;} #mc_embed_signup div.mce_inline_error{margin: 0 0 1em 0; padding: 5px 10px; background-color:#6B0505; font-weight: bold; z-index: 1; color:#fff;}'; 
} 
var head= document.getElementsByTagName('head')[0]; 
var style= document.createElement('style'); 
style.type= 'text/css'; 
if (style.styleSheet) { 
    style.styleSheet.cssText = err_style; 
} else { 
    style.appendChild(document.createTextNode(err_style)); 
} 
head.appendChild(style); 
setTimeout('mce_preload_check();', 250); 

var mce_preload_checks = 0; 
function mce_preload_check(){ 
    if (mce_preload_checks>40) return; 
    mce_preload_checks++; 
    try { 
     var jqueryLoaded=jQuery; 
    } catch(err) { 
     setTimeout('mce_preload_check();', 250); 
     return; 
    } 
    try { 
     var validatorLoaded=jQuery("#fake-form").validate({}); 
    } catch(err) { 
     setTimeout('mce_preload_check();', 250); 
     return; 
    } 
    mce_init_form(); 
} 
function mce_init_form(){ 
    jQuery(document).ready(function($) { 
     var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; 
     var mce_validator = $("#mc-embedded-subscribe-form").validate(options); 
     $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator 
     options = { url: 'http://thetrustsstadium.us4.list-manage.com/subscribe/post-json?u=xxx&id=xxx&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", 
        beforeSubmit: function(){ 
         $('#mce_tmp_error_msg').remove(); 
         $('.datefield','#mc_embed_signup').each(
          function(){ 
           var txt = 'filled'; 
           var fields = new Array(); 
           var i = 0; 
           $(':text', this).each(
            function(){ 
             fields[i] = this; 
             i++; 
            }); 
           $(':hidden', this).each(
            function(){ 
             var bday = false; 
             if (fields.length == 2){ 
              bday = true; 
              fields[2] = {'value':1970};//trick birthdays into having years 
             } 
             if (fields[0].value=='MM' && fields[1].value=='DD' && (fields[2].value=='YYYY' || (bday && fields[2].value==1970))){ 
              this.value = ''; 
             } else if (fields[0].value=='' && fields[1].value=='' && (fields[2].value=='' || (bday && fields[2].value==1970))){ 
              this.value = ''; 
             } else { 
              this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; 
             } 
            }); 
          }); 
         return mce_validator.form(); 
        }, 
        success: mce_success_cb 
       }; 
     $('#mc-embedded-subscribe-form').ajaxForm(options); 


    }); 
} 
function mce_success_cb(resp){ 
    $('#mce-success-response').hide(); 
    $('#mce-error-response').hide(); 
    if (resp.result=="success"){ 
     $('#mce-'+resp.result+'-response').show(); 
     $('#mce-'+resp.result+'-response').html(resp.msg); 
     $('#mc-embedded-subscribe-form').each(function(){ 
      this.reset(); 
     }); 
    } else { 
     var index = -1; 
     var msg; 
     try { 
      var parts = resp.msg.split(' - ',2); 
      if (parts[1]==undefined){ 
       msg = resp.msg; 
      } else { 
       i = parseInt(parts[0]); 
       if (i.toString() == parts[0]){ 
        index = parts[0]; 
        msg = parts[1]; 
       } else { 
        index = -1; 
        msg = resp.msg; 
       } 
      } 
     } catch(e){ 
      index = -1; 
      msg = resp.msg; 
     } 
     try{ 
      if (index== -1){ 
       $('#mce-'+resp.result+'-response').show(); 
       $('#mce-'+resp.result+'-response').html(msg);    
      } else { 
       err_id = 'mce_tmp_error_msg'; 
       html = '<div id="'+err_id+'" style="'+err_style+'" mce_style="'+err_style+'"> '+msg+'</div>'; 

       var input_id = '#mc_embed_signup'; 
       var f = $(input_id); 
       if (ftypes[index]=='address'){ 
        input_id = '#mce-'+fnames[index]+'-addr1'; 
        f = $(input_id).parent().parent().get(0); 
       } else if (ftypes[index]=='date'){ 
        input_id = '#mce-'+fnames[index]+'-month'; 
        f = $(input_id).parent().parent().get(0); 
       } else { 
        input_id = '#mce-'+fnames[index]; 
        f = $().parent(input_id).get(0); 
       } 
       if (f){ 
        $(f).append(html); 
        $(input_id).focus(); 
       } else { 
        $('#mce-'+resp.result+'-response').show(); 
        $('#mce-'+resp.result+'-response').html(msg); 
       } 
      } 
     } catch(e){ 
      $('#mce-'+resp.result+'-response').show(); 
      $('#mce-'+resp.result+'-response').html(msg); 
     } 
    } 
} 
// --></script> 
<!--End mc_embed_signup--> 
+0

mailchimp提供的jquery.form-n-validate.js文件中存在一个错误,该错误会中断某些尝试将URL作为第一个参数传递的jQuery.ajax调用。本周我已经联系了他们的支持团队,我鼓励你也这样做。 – colllin 2013-08-30 19:40:28

回答

0

确定这是可能的,但没有办法只用您发布的代码来告诉。我们需要一个链接到测试页面,以便我们可以看看整个事情,看看冲突在哪里。之前,我花了很多时间虽与它搞乱,我会尝试这个组件 -

http://extensions.joomla.org/extensions/content-sharing/mailing-a-newsletter-bridges/13602

它配备了一个注册模块,它似乎与大多数第三方JavaScript的很好结合。在做任何事之前尝试它,它可能会工作。

否则,您可能必须重写验证或切换到服务器端验证以解决冲突。

+0

嗨布伦特,我曾尝试过joomlamailer。我放弃了它,因为添加新用户需要很长时间。我的网站上有超过1,3000位用户。然后,我尝试从http://mailchimp.com的嵌入表单 – 2012-03-13 01:26:53

+0

缓慢添加新用户意味着什么?你的意思是当用户在前端提交表单时?如果你的用户已经在mailchimp中,你不需要做任何事情,他们已经在那里了。 – 2012-03-13 10:05:38

+0

嗨布伦特,我的意思是需要很长时间才能提交新用户。它只是显示了“添加......”很长一段时间。同样的事情发生在验证。 – 2012-03-13 23:09:21