0

私は form.edit_recipe を持っています。私の目的は、ユーザーのプロンプトなしで、ページがアンロードされる前に (新しいデータがある場合) このフォームを正常に保存することです。

これは JQ の重要な部分です。

    $(document).ready(function() {
      $(window).bind('beforeunload', function() {
        if (auto_save_timer) {  // auto_save_timer == true means there are changes
          $("#auto_save_overlay").css('display', 'block');  // shows a spinner
          $(".edit_recipe").submit();
        }
      });
    });

次のページへのリンクをクリックすると、同じ状況やデータ セットであっても、変更が保存される場合と保存されない場合があります。

ページ上の他の変数と JQ がこれに影響を与えていないことは 99% 確信していますが、必要に応じてコード サンプルを追加して更新できます。

私は道に迷ったのか、何が問題なのかわかりませんが、次のページの読み込みによってフォーム データが中断されていることに関係しているように感じます。

助言がありますか?

編集:これまでの提案に感謝します。@see163 のアドバイスに耳を傾ける必要があると思います。おそらく、ユーザーに手動で保存ボタンを押して、保存されalert()ていない変更がある場合は単純に追加することを検討してください。これはよりオーソドックスなアプローチですか?.beforeunloadまた、Opera と Chrome でごみが発生している場合、クロスブラウザ対応にするためにどの JQuery イベント/アクションを使用する必要がありますか?

4

2 に答える 2

1

アンロードとアンロード前は、オペラでは常に機能せず、クロームでは機能しない場合があります。

気をつけて。

于 2012-07-01T15:58:02.377 に答える
0

各リンクで次のことができます。

<a href="javascript:submitForm('URL HERE')">............</a>

そして、あなたのjsで次のことを行います:

    function submitForm(url){
       if (auto_save_timer) {
          $("#auto_save_overlay").css('display', 'block');
          $(".edit_recipe").submit();
          window.location = url;
        }
    }
于 2012-07-01T16:08:30.390 に答える