2017-03-15 109 views
0

我正在使用Web窗体的营销人员模块安装和网站fancybox插件(该网站)上Sitecore 7.2网站上设置网关窗体正在使用fancybox版本1.3.4,并且我无法更新此版本,或者它可能会破坏正在使用此插件的网站上的其他功能)。Sitecore 7 - 使用Web窗体为营销人员弹出窗体模式

这就是表单应该如何工作的原因:用户点击页面上的链接,这会打开一个弹出窗口,其中必须填写表单才能访问下载。

到目前为止,我已经得到了一些工作,以便在页面上单击链接时,fancybox模式将打开并显示WFFM表单。

这里是jQuery的,做这样的:

jQuery.noConflict(); 
(function($) { 
    $(document).ready(function() { 
     // Open the gateway form into a fancybox modal 

     //check to see if there is a gateway form link on the page 
     if ($(".protected-item").length > 0) { 

      //if so, then we want to target the click event 
      $('.protected-item').click(function(event) { 
       event.preventDefault(); 
       //Get the value of the href of the link since this url will contain the page with the gateway form 
       var url = $('.protected-item').attr('href'); 

       //open the page with the gateway form in the fancybox modal 
       $.fancybox({ 
        'autoDimensions': true, 
        'height': 400, 
        'width': 400, 
        'scrolling': 'no', 
        'href': url, 
        'autoScale': true, 
       }); 

      }); 
     } 
    }); 
})(jQuery); 

我所做的Sitecore的是创建一个通用的网页(我称为网关形式测试页),并插入测试网关形式到它。然后,在我希望使用网关表单的页面上,我已经将一些文本(“点击此处”)链接到该网关表单测试页面。

问题是,在点击WFFM表单的提交按钮后,页面会将我发送到表单所在的网址(即domainname/OtherPages/GatewayFormTestPage.aspx),而不是只重新加载fancybox窗口并显示成功的消息或错误消息,如果不是所有的字段都被填入。

我试着设置fancybox模式的'iframe'的类型,但所做的只是渲染一个空的弹出框(没有内容显示在fancybox-内容块,或者 - 我检查了Chrome开发工具中的元素)。

有没有一种方法可以将WFFM格式封装在iframe中,这样我可以避免在单击“submit?”时转到另一个页面。我希望用户始终保持弹出窗口模式。

谢谢,我知道这可能是一个复杂的过程,我希望我可以选择一个更好的解决方案,但这是我必须与之合作。

回答

1

我认为使用iframe不适合您的任务。最好使用AJAX请求而不是iframe。

您应该检查表单项目上的“是Ajax Mvc表单”以仅重新加载没有页面回发的表单。它将允许您无需完整重新加载页面即可获取表单更新。

如果您使用的WebForms(不MVC),那么你可以用WFFM形式进入更新面板(不用于性能和透明性非常好)有关使用WFFM

和小费:你应该只在当情况下使用字段/操作将由营销人员管理。您不需要在现场使用所有表格。确保它不是你的情况。

+0

我同意WFFM在这里不是最好的选择,但这个决定不取决于我 - 其他人做出了选择,这将是如何:\ 我确实设法让iframe工作 - 我需要从fancybox的插件中包含另一个js文件。自从计划到位后,我不想大惊小怪,而且我必须与我的工作一起工作。 虽然我将你的评论标记为答案,因为这些仍然是很好的选择 - 如果我在这个项目中有更多的发言权。 –