我正在使用primefaces数据表。如果我在表格中做了任何更改而未保存更改,如果我尝试离开屏幕,我们需要显示警告消息。
答案 0 :(得分:1)
@Daniel的好主意,但我不喜欢他为每次输入更改设置的昂贵绑定。如果你的桌子有下拉菜单,复选框或......,该怎么办?你也必须在它们上绑定一个改变事件。
仅通过onchange
属性在datatable
上绑定widgetVar
个活动。
设置widgetVar
到您的表格,例如myTableVar
。
然后使用:
<script>
var dirtyFlag = false;
$(window).bind("beforeunload", function(event) {
if(dirtyFlag === true)
return "You have unsaved changes";
});
myTableVar.tbody.context.onchange = function() {dirtyFlag = true;}
</script>
答案 1 :(得分:0)
这是一个快速的脏解决方案,只需将其放入您的js文件(您可以在浏览器控制台的Primefaces Datatable Showcase上在线测试)
var dirtyFlag = false;
$(window).bind("beforeunload",function(event) {
if(dirtyFlag === true) return "You have unsaved changes";
});
$(document).on('change','input', function(){dirtyFlag = true});
点击保存按钮后,不要忘记将dirtyFlag
设置为false
关于更改事件的选择器:您可以对其进行微调,以包含某种形式下的其他输入等&#39;