2011-04-04 99 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>