【问题标题】:Dont ask confirm if user submit the form不要询问用户是否提交表单
【发布时间】:2013-01-31 11:39:14
【问题描述】:

如果用户尝试在不提交表单的情况下重定向到另一个页面,我正在使用以下 JavaScript 代码来警告用户。

window.onbeforeunload = function() {
   return 'Are you sure that you want to leave this page?';
};

这工作正常。但我的问题是当用户尝试使用提交按钮提交表单时,会出现确认框。 如果用户提交表单,我不想询问确认,否则我想询问确认。怎么可能?

【问题讨论】:

  • 请查看onbeforeunload。我认为它在 chrome 或 firefox 中都不起作用
  • 我发现它在 chrome 和 Firefox 上都可以正常工作。但是它们的响应不同。在我的情况下,Firefox 询问“此页面要求您确认是否要离开 - 您输入的数据可能不会被保存。”但是chrome询问确认“你确定要离开这个页面你确定要离开这个页面吗?”

标签: javascript jquery confirm


【解决方案1】:

维护一个状态变量。当用户单击提交按钮时,将状态设置为userSubmitted=True
状态变量可能包括全局变量或隐藏控件。

var userSubmitted=false;

$('form').submit(function() {
userSubmitted = true;
});

然后像这样检查

window.onbeforeunload = function() {
    if(!userSubmitted)
        return 'Are you sure that you want to leave this page?';
};

PS:交叉检查跨浏览器的 onbeforunload 兼容性。

【讨论】:

    【解决方案2】:

    简单。

    只要有一个全局变量

    var can_leave = false;
    

    在您的表单上:

    $('form').submit(function() {
    ...
    ...
    can_leave = true;
    });
    

    在你的 onbeforeunload() 处理程序里面有这个:

    window.onbeforeunload = function() {
    if (!can_leave)   return 'Are you sure that you want to leave this page?';
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 2012-01-14
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多