2015-06-24 55 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; 
      } 
     })