通过 jQuery 提交(自动保存)时如何将数据添加到 html 表单?

发布于 2024-12-09 03:26:17 字数 484 浏览 2 评论 0原文

我有一个通过 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 来完成这个?或者这根本不可能?

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

谢谢你们!

I have a form I am submitting by jQuery, to auto-save it. This is in Ruby On Rails 3. My model is a Post that I want to auto-save. The post model is adapted to ignore certain validations if a boolean field (draft) is = true. (If draft is nil, then the validations run)

I use the following code to submit the form at intervals to autosave it.

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

When the form submits by this function, I want to include a variable :draft => true somehow, to ignore validations etc.. How can I add to this javascript to accomplish this? Or is that simply not possible?

If I would have to go into the code rails-wise and do another solution, please comment to let me know and I'll post the relevant code.

Thanks guys!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

姐不稀罕 2024-12-16 03:26:17
$(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 且名称为草稿。

我希望这有帮助

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

I have updated your code, I have created hidden input text box with the value true and name draft.

I hope this helps

じее 2024-12-16 03:26:17

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

其次,您不想每分钟(每次 POST 时)再次遍历 DOM。您应该将表单缓存在变量中,以便以后可以重复使用它。

您可以这样做:

$(document).ready(function() {

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

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

});

First of all, $('#post_form form[data-remote]').submit() will do a full submit, and the user will be sent to the action page. What you want to do is an AJAX post.

Secondly, you don't want to traverse the DOM again every minute (every time you POST). You should cache the form in a variable, so that you can re-use it later.

Here's how you'd go about it:

$(document).ready(function() {

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

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

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文