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

单击指向下一页的链接时,有时更改会保存,有时则不会,即使在相同的情况和数据集下也是如此。

我 99% 确定我的其他变量和页面上的 JQ 不会影响这一点,但如果需要,我可以使用更多代码示例进行更新。

我迷路了,或者问题是什么,但我觉得这与表单数据被下一页加载中断有关。

有什么建议么?

编辑:感谢到目前为止的建议。我想我应该听从@see163 的建议,也许考虑强迫用户手动按下保存按钮,alert()如果有未保存的更改,只需添加一个。这是一种更正统的方法吗?如果.beforeunload在 Opera 和 Chrome 中是垃圾,我应该使用哪些 JQuery 事件/操作来实现跨浏览器友好?

4

2 回答 2

1

unload 和 beforeunload 不能一直在 Opera 中工作,有时也不能在 chrome 中工作。

当心。

于 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 回答