0

我有一个通过 jQuery 提交的表单,用于自动保存它。这是在 Ruby On Rails 3 中。我的模型是我想要自动保存的帖子。如果布尔字段(草稿)= true,则 post 模型适用于忽略某些验证。(如果 Draft 为 nil,则运行验证)

我使用以下代码每隔一段时间提交表单以自动保存它。

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

当表单通过此函数提交时,我想以某种方式包含一个变量:draft => true,以忽略验证等。如何添加到这个 javascript 来完成这个?或者这根本不可能?

如果我必须进入代码轨道并做另一个解决方案,请发表评论让我知道,我会发布相关代码。

多谢你们!

4

2 回答 2

2
$(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 和名称草稿。

我希望这有帮助

于 2011-10-10T20:37:31.687 回答
0

首先,$('#post_form form[data-remote]').submit()会做一个完整的提交,然后用户会被发送到action页面。你想要做的是一个 AJAX 帖子。

其次,您不想每分钟(每次发布)都再次遍历 DOM。您应该将表单缓存在一个变量中,以便您以后可以重新使用它。

以下是你的做法:

$(document).ready(function() {

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

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

});
于 2011-10-10T20:40:15.820 回答