2011-04-04 98 views
0

我想在自己的页面上实现“自动保存”功能。我不知道如何开始。我有一个对象(有任务列表)。我想每20秒提交一次表单,这样用户就不会丢失数据。它不一定非要这样。每次提交后,只要有没有更改应该禁用提交按钮。Spring MVC:自动保存功能(jQuery,Ajax ...)

我正在使用Spring MVC。我做了一些研究,但我不是jQuery,Spring的专家......所以这对我来说都很复杂。一个提示,或一个工作的例子会帮助我很多。

这是一个非常复杂的形式(时间表)。在一页上有+/- 50个文本框(最小,取决于可用任务的数量)

谢谢。

回答

0

我不知道是什么Spring MVC的是,但在ASP.NET MVC我会做到以下几点:

我认为所有的数据以某种形式,你给形式的ID,然后将它张贴:

$(function() { 
    var timer = 0; 
    $(this).mousemove(function(e){ 
    timer = 0; 
    }); 
    $(this).keypress(function() { 
    timer = 0; 
    }); 
    window.setInterval(function() { 
     timer++; 
    if (timer == 20) { 
     $('#form').submit(function() { 

     }); 
    } 
    }, 1000); 

});

检查mousemove,按键,如果这不是在20秒内完成,那么它会保存表单。

编辑:你也可以做的也许就是,每次填写文本框后,发布数据:如下:

http://api.jquery.com/change/

$('.textbox').change(function() { 
      $.ajax({ 
       url: '/Save/Textbox', 
       data: 'TextBoxId=' + $(this).id + '&TextValue=' + $(this).value 
      }); 
}); 

在这个例子中,你犯了一个叫保存控制器,称为文本框的操作,您给文本框保存的数据的ID,以及更改时(在聚焦文本框之后),它会发布文本框ID和框的值。

然后在控制你检索:

public void SaveText(string TextBoxId, string TextValue) { 
    // SAVE 
    } 
+0

工作正常。但是当用户还在填写表单时会发生什么?我想添加一些“检查”来照顾这一点。任何想法的表单加载autodisable?非常感谢btw。 – Geoffrey 2011-04-04 12:52:19

+0

editted,但不知道如果这是一个很好的方法来做到这一点虽然 – Lauw 2011-04-04 13:07:43

+0

编辑与另一个可能的答案 – Lauw 2011-04-04 13:17:57

0

下面的JS脚本会帮助你做出Ajax调用时曾经形成磁场变化。

<script> 
    $(document).ready($('.form-control').change(function() { 
    $.ajax({ 
    type : "post", 
    url : "http://localhost:8521/SpringExamples/autosave/save.htm", 
    cache : false, 
    data : $('#employeeForm').serialize(), 
    success : function(response) { 
    var obj = JSON.parse(response); 
    $("#alert").text(JSON.stringify(obj)); 
    $("#alert").addClass("alert-success"); 
    }, 
    error : function() { 
    alert('Error while request..'); 
    } 
    }); 
    })); 
</script>