0

我正在使用这个 jquery 代码来警告用户在完成我们的在线申请之前不要离开。我们有很多用户在菜单/列表字段中点击后退按钮(不知道这是一个导航快捷方式)并丢失了他们在应用程序中输入的所有数据。问题是,我不知道如何在他们点击提交按钮时不显示警告。

我在这个网站上查看了其他几个类似的帖子,但我也无法让它们工作。实际上,对于大多数人来说,我什至无法让弹出窗口正常工作。我对 jquery 不是很熟悉,所以这可能是我缺少的一些简单的东西。(我实际上有另一个解决方案,我在这里工作:http ://www.citizensmemorial.com/careers/online-app.html

<script> function setConfirmUnload(on) {

     window.onbeforeunload = (on) ? unloadMessage : null;

}

function unloadMessage() {

     return 'You have started filling out this application.' +
        ' If you navigate away from this page without' +           
        ' first saving your data, the changes will be' +
        ' lost.';

}</script>
<script>
$(document).ready(function() { 

     $(':input',document.form1).bind(
         "change", function() { 
              setConfirmUnload(true);
         }
      ); // Prevent accidental navigation away

});
</script>
4

1 回答 1

0

我已经撤销了您的验证,因此您setConfirmUnload在设置确认时不必解析任何内容。

function setConfirmUnload(disable) {
     window.onbeforeunload = disable ? null : unloadMessage;
}

function unloadMessage() {
    return 'You have started filling out this application.' +
        ' If you navigate away from this page without' +           
        ' first saving your data, the changes will be' +
        ' lost.';
}
setConfirmUnload();
jQuery(function($) { // <-- Dom is ready (same as $(document).ready(function($) {)
    $("form").on("submit", setConfirmUnload);
});

我已经绑定setConfirmUnload到表单提交处理程序。调用中的第一个参数是jQueryEvent Objectthis 将在测试时验证为 true。

您可以在这里尝试一个简单的演示


如果您想在输入任何内容时首先激活卸载处理程序,您可以使用:

var $inputs = $("form :input").on("change", function() {
    setConfirmUnload();
    $inputs.off("change"); // <-- remove the event form all elements.
});
于 2013-03-13T11:47:48.820 回答