2017-03-15 105 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文件。自從計劃到位後,我不想大驚小怪,而且我必須與我的工作一起工作。 雖然我將你的評論標記爲答案,因爲這些仍然是很好的選擇 - 如果我在這個項目中有更多的發言權。 –