Как я могу добавить данные в HTML-форму при отправке (автосохранение) с помощью jQuery? - PullRequest
0 голосов
/ 11 октября 2011

У меня есть форма, которую я отправляю через jQuery, для ее автоматического сохранения. Это в Ruby On Rails 3. Моя модель - это пост, который я хочу сохранить автоматически. Пост-модель адаптирована для игнорирования определенных проверок, если логическое поле (черновик) = true. (Если черновик равен нулю, проверки выполняются)

Я использую следующий код для периодической отправки формы для ее автоматического сохранения.

 $(document).ready(function() {
   setInterval(function() {
     $('#post_form form[data-remote]').submit();
   }, 1000*60); // 1000ms * 60s = 1m
 });

Когда форма отправляется этой функцией, я хочу как-то включить переменную: draft => true, чтобы игнорировать проверки и т. Д. Как я могу добавить этот javascript для выполнения этого? Или это просто невозможно?

Если мне потребуется перейти к коду кода и найти другое решение, пожалуйста, прокомментируйте, чтобы сообщить мне, и я опубликую соответствующий код.

Спасибо, ребята!

Ответы [ 2 ]

2 голосов
/ 11 октября 2011
$(document).ready(function() {
   setInterval(function() {
     var draft = $('#draft');
     if(draft == null)
     {
        $('post_form').append('<input type="hidden" name="draft" id="draft" value="true" />');
       draft = $('#draft');
     }
     draft.val('true');


     $('#post_form form[data-remote]').submit();
   }, 1000*60); // 1000ms * 60s = 1m
 });

Я обновил ваш код, создал скрытое текстовое поле ввода со значением true и именем черновика.

Надеюсь, это поможет

0 голосов
/ 11 октября 2011

Прежде всего, $('#post_form form[data-remote]').submit() выполнит полную отправку, и пользователь будет отправлен на страницу action. То, что вы хотите сделать, это сообщение AJAX.

Во-вторых, вы не хотите проходить DOM снова каждую минуту (каждый раз, когда вы POST). Вы должны кэшировать форму в переменной, чтобы вы могли использовать ее позже.

Вот как ты это сделаешь:

$(document).ready(function() {

   var $form = $('#post_form form[data-remote]'),
       href = $form.attr('href');

   setInterval(function() {
      $.post(href, $form.serialize() + '&draft=true');
   }, 60000);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...