0

自動保存するために、jQueryで送信するフォームがあります。これはRubyOnRails 3にあります。私のモデルは、自動保存したい投稿です。ブールフィールド(ドラフト)がtrueの場合、postモデルは特定の検証を無視するように適合されています。(ドラフトが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で名前がdraftの非表示の入力テキストボックスを作成しました。

これがお役に立てば幸いです

于 2011-10-10T20:37:31.687 に答える
0

まず$('#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);

});
于 2011-10-10T20:40:15.820 に答える