2015-06-24 53 views
0

我目前正在使用需要多階段預訂過程的Umbraco項目。延遲提交,執行操作,然後提交

在這個過程中,我有多個模型作爲預訂過程的每個階段。這些都構成了用於推動整個過程的總體父模型的一部分。

當第一階段提交時,頁面上的信息被傳遞給控制器​​,進行驗證和處理。完成此操作後,用戶將被引導回頁面,並顯示該過程的第二階段。

我知道這可能聽起來有點精神,但相信我這是你必須在Umbraco中用自定義路由進行的方式。

我遇到的問題是我的預訂過程在頁面中間,當頁面重新加載時,它會滾動到頂部。

我的想法是捕獲使用Javascript的頁面的當前滾動位置,並將其傳遞到我的模型上的表單提交但是做到這一點我需要觸發捕獲和注入這些數據到我的表單,當用戶點擊提交按鈕。

有沒有因此一種方式,我可以禁用按鈕的默認行爲:

e.preventDefault() 

執行一些邏輯:

var top = $('html').offset().top; 

然後重新初始化提交按鈕的默認行爲以便在執行此邏輯後提交。

$(this).unbind('submit').submit(); 

我試過以下,但它似乎只是提交表單,就好像沒有任何事情發生。

$(document).ready(function(){ 
     $('#BKG_Next').on("click",function(e){ 
      e.preventDefault(); 
      var top = $('html').offset().top; 
      alert(top); 
      $(this).unbind('submit').submit(); 
     }) 
    }) 

任何幫助將不勝感激。

回答

0

一些挖掘後,進一步探索我想出了以下內容:

var sleep = false; 
     $('#BKG_Next').on("click",function(e){ 
      if(!sleep){ 
       e.preventDefault(); 
       var top = $(window).scrollTop(); 
       var $element = $(this); 
       $('#position').value(top); 
       setTimeout(function(){ 
        slept = true; 
        $element.click(); 
       }, 100); 
      }else{ 
       slept = false; 
      } 
     })