Spring MVC: функция автоматического сохранения (jQuery, Ajax ...) - PullRequest
0 голосов
/ 04 апреля 2011

Я хотел бы реализовать функцию " автосохранение " на моей странице.Хотя я не знаю, с чего начать.Я получил один объект (со списком задач).Я хотел бы отправлять форму каждые 20 секунд, чтобы пользователи не потеряли свои данные.Это не должно быть точно так.После каждой отправки кнопка отправки должна быть отключена, если нет никаких изменений .

Я использую Spring MVC.Я провел небольшое исследование, но я не эксперт в jQuery, Spring ... Так что для меня все это довольно сложно.Совет или рабочий пример мне очень помогут.

Это довольно сложная форма (расписание).На одной странице +/- 50 текстовых полей (минимум зависит от количества доступных задач)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 августа 2014

Ниже 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>
0 голосов
/ 04 апреля 2011

Я не знаю, что такое spring mvc, но в ASP.NET MVC я бы сделал следующее:

Я предполагаю, что все ваши данные в форме, вы даете форме идентификатор, а затем публикуете его:

$(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);

});

Проверяет движение мыши, нажатие клавиши, если это не будет сделано в течение 20 секунд, тогда сохранится форма.

Редактировать: Возможно, вы также можете сделать, после каждого заполненного текстового поля, опубликовать данные: следующим образом:

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

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

В этом примере вы создаете контроллер с именем Save, действие с именем Textbox, вы даете текстовому полю идентификатор данных, которые он должен сохранить, и при изменении (после того, как не фокусирует текстовое поле) он отправляет идентификатор текстового поля, и стоимость коробки.

затем в контроллере вы получаете его:

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