Sitecore 7-在弹出模式中为营销人员使用Web表单

Sitecore 7-在弹出模式中为营销人员使用Web表单,sitecore,fancybox,sitecore7.2,web-forms-for-marketers,Sitecore,Fancybox,Sitecore7.2,Web Forms For Marketers,我正在使用已安装的营销人员Web表单模块和该网站的fancybox插件(该网站使用的是fancybox 1.3.4版,我无法更新该版本,否则可能会破坏该网站上使用该插件的其他功能)在Sitecore 7.2网站上设置网关表单 这就是表单的工作原理:用户单击页面上的链接,这将打开一个弹出窗口,其中包含一个他们必须填写的表单,然后才能访问下载 到目前为止,我已经完成了一些工作,当在页面上单击链接时,fancybox模式将打开并显示WFFM表单 以下是执行此操作的jQuery: jQuery.noCo

我正在使用已安装的营销人员Web表单模块和该网站的fancybox插件(该网站使用的是fancybox 1.3.4版,我无法更新该版本,否则可能会破坏该网站上使用该插件的其他功能)在Sitecore 7.2网站上设置网关表单

这就是表单的工作原理:用户单击页面上的链接,这将打开一个弹出窗口,其中包含一个他们必须填写的表单,然后才能访问下载

到目前为止,我已经完成了一些工作,当在页面上单击链接时,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中创建一个通用页面(我调用了网关表单测试页面),并将测试网关表单插入其中。然后,在我想展示gateway表单的页面上,我将一些文本(“单击此处”)链接到gateway表单测试页面

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

我尝试将fancybox模式的类型设置为“iframe”,但所做的只是呈现一个空的弹出窗口(fancybox内容块中也没有显示任何内容——我检查了Chrome开发工具中的元素)

是否有一种方法可以将WFFM表单包装在iframe中,以便在单击“提交”时避免转到另一个页面?我希望用户始终保持在弹出模式中


谢谢,我知道这可能是一个复杂的过程,我希望我能选择一个更好的解决方案,但这是我必须解决的问题

我认为使用iframe不是完成任务的正确方法。最好使用AJAX请求而不是iframe

您应该在表单项上选中“IsajaxMVC表单”,以便只重新加载表单而不进行页面回发。它将允许您在不完全重新加载页面的情况下获得表单更新

如果您使用的是WebForms(不是MVC),那么您可以将WFFM表单包装到更新面板中。(对于性能和透明度来说不是很好)


关于使用WFFM的提示:您应该仅在由营销人员管理字段/操作的情况下使用WFFM。您不需要将其用于站点上的所有表单。确保这不是您的情况。

我认为使用iframe不是完成任务的正确方法。最好使用AJAX请求而不是iframe

您应该在表单项上选中“IsajaxMVC表单”,以便只重新加载表单而不进行页面回发。它将允许您在不完全重新加载页面的情况下获得表单更新

如果您使用的是WebForms(不是MVC),那么您可以将WFFM表单包装到更新面板中。(对于性能和透明度来说不是很好)


关于使用WFFM的提示:您应该仅在由营销人员管理字段/操作的情况下使用WFFM。您不需要将其用于站点上的所有表单。确保这不是你的情况。

我同意WFFM不是这里的最佳选择,但决定权不在我——其他人做出了选择,事情就是这样:\n我确实设法让iframe工作了——我需要从fancybox的插件中包含另一个js文件。我不想再为它大惊小怪了,因为计划已经到位,我必须用我所拥有的工作。不过,我把你的评论标记为答案,因为这些仍然是不错的选择--如果我在这个项目中有更多发言权的话。谢谢你的建议,我没有将mvc wffm表单插入更新面板,我同意WFFM不是这里的最佳选择,但决定权不在我身上——其他人做出了选择,事情就是这样:\n我确实设法让iframe工作了——我需要从fancybox的插件中包含另一个js文件。我不想再为它大惊小怪了,因为计划已经到位,我必须用我所拥有的工作。不过,我将您的评论标记为答案,因为这些仍然是很好的选择——如果我在这个项目中有更多发言权的话。谢谢您的建议,我没有将mvc wffm表单插入更新面板,并且它可以工作。