当用户点击浏览器返回按钮时,出于良好的原因,提醒用户。

10

我知道这涉及到了一个禁忌话题,请不要回复"你永远不应该这样做"等等。

我有一个非常长的向导表单,一些用户太习惯使用浏览器的前进和后退按钮,而不是表单向导上的“后退”和“下一步”按钮。如果他们点击浏览器的后退按钮,他们将失去所有的表单数据(因为表单如此之长,这是一件很烦人的事情)。

是否可能显示一个警告,当会有一个“带我离开这里”按钮和一个“取消”按钮,所以如果他们点击取消,它将取消后退按钮的功能?


2
我不确定你是否违反了“绝不这样做”的规则。当我尝试离开一个未保存更改的页面时,Stackoverflow会提醒我,Gmail、我的银行等也是如此。我总是很感激它们。我也看到过多页表单数据在前后浏览器操作中保持不变,但我会满足于Sarfraz下面的警报。 - msw
2个回答

8
您应该从onbeforeunload事件中返回一条消息,像这样:
window.onbeforeunload = function() {
    return "Leaving this page will reset the wizard";
};

请注意,此事件将在用户以任何原因离开页面时触发,即使您的向导完成后也是如此。
当向导完成时,您应该设置一个标志而不返回消息。

window.onbeforeunload = function() { return "离开此页面将重置向导"; }; 效果非常好。虽然我更喜欢jQuery语法,但我无法让Sarfraz Ahmed的代码显示取消和确定按钮。谢谢SLaks。 - Dirty Bird Design
当向导完成时,如何设置标志?一定需要! - Dirty Bird Design
这要看情况。你的向导是怎么结束的?可以创建一个全局变量 var isWizardFinished = false;,当向导完成时将其设置为 true - SLaks

1
你可以使用jQuery BBQ插件来重写下一个/上一个按钮的功能,使得在这个“向导”中过渡更加无缝。

http://benalman.com/projects/jquery-bbq-plugin/

虽然设置有点复杂,但如果您正在寻找相同的功能,请查看提供的示例。

很可能您需要重构代码以适应,并且这将需要几个小时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接