我想在主文件中编写Jquery代码,这样如果用户更改页面并且有任何未保存的更改,则用户应该获得警报.我从这里得到了一个答案:链接
但是在大多数解决方案中,我将不得不在所有页面上编写代码.我希望它只在一个地方写,这样每个人都不必担心在模块中写它.我的代码是这样的:
<script type="text/javascript">
var isChange;
$(document).ready(function () {
$("input[type='text']").change(function () {
isChange = true;
})
});
$(window).unload(function () {
if (isChange) {
alert('Handler for .unload() called.');
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
但每次我在文本框中进行更改.change()事件都没有触发.
代码中有什么问题?
编辑:我将.change()更改为.click并将其触发.我正在使用jquery 1.4.1 ..是因为jquery版本,change()不起作用?
我想通过javascript跟踪表单中输入的变化.我的意图是(但不限于)
想法?
使用window.onbeforeunload(或$(window).on("beforeonload"))时,是否可以在该弹出窗口中显示自定义消息?
也许是一个适用于主流浏览器的小技巧?
通过查看现有的答案,我觉得过去可能会使用confirm或者alert或类似的东西event.returnValue,但现在看来它们已经不再适用了.
那么,如何在beforeunload弹出窗口中显示自定义消息?那甚至/仍然可能吗?
我在这里发布了这个,但认为它本身可能值得一个问题.
我正在尝试做的是显示一个对话框,询问用户是否有未保存的更改时他/她是否要离开页面.一切正常.但问题描述如下:
有没有人遇到过Internet Explorer两次触发onbeforeunload事件的问题?谷歌搜索时,我发现它与(以及其他)一个ASP.NET链接按钮HTML代码的事实有关<a href="javascript: __doPostBack....
显然,当IE鼓励一个没有的链接时href="#",它会触发onbeforeunload事件.然后,当您确认我们正在显示的javascript对话框时,页面将执行"真实"卸载以导航到另一个页面,并再次引发onbeforeunload事件.
互联网上提供的解决方案是设置一个布尔变量并在显示对话框之前检查它.所以第二次,它不会显示.这一切都很好,但是当用户取消时,仍然会设置变量.因此,下次用户想要离开页面时,对话框将不再显示.
希望这有点清楚,我希望有人找到解决办法吗?
我目前正在使用Backbone.Marionette来创建SPA,在其中一个视图中,用户可以使用未保存的更改进行导航.我可以控制其中一些事件,例如视图中的按钮和菜单选项,这会将用户带走,但是其他一些事件需要操作Backbone.Router或直接使用DOM事件.
我已经尝试过监听beforeunload(因为应用程序仍然加载hashchange不起作用)和(不起作用,因为你无法阻止浏览器导航).这些解决方案(1,2,3)不要在这种情况下工作时,JavaScript是永远不会卸载.
改变Backbone.Router似乎是最好的选择,但由于它是如何初始化的,我认为不可能引入这个功能,或者至少我找不到这样做的方法.例如,此解决方案不起作用,因为hashchange不可取消(您不能在其上调用stopPropagation),并且此其他解决方案不起作用,因为navigate未在Backbone.Router对象上定义.
有什么建议?
可能重复:
使用JavaScript检测未保存的更改
我的Web应用程序有3个Web表单,我在我的网页中实现了验证.我想在我的web应用程序中实现isdirty功能.我想在用户点击注销时弹出我的网页中的消息框(这是一个loginstatus如果表格有任何变化.
环境:Asp.net VS2008 c#