我正在使用primefaces开发几个GUI,我想在离开网站之前警告用户。我在这里找到了一个完美的解决方案 How to detect unsaved data in form when user leaves the page? 这是我正在使用的JavaScript代码(在链接中找到)
$(function() {
// Set the unload message whenever any input element get changed.
$(':input').on('change', function() {
setConfirmUnload(true);
});
// Turn off the unload message whenever a form get submitted properly.
$('form').on('submit', function() {
alert('I am here');
setConfirmUnload(false);
});
});
function setConfirmUnload(on) {
var message = "You have unsaved data. Are you sure to leave the page?";
window.onbeforeunload = (on) ? function() {
return message;
} : null;
}
我的问题是我的primefaces保存按钮是ajax,并没有调用'submit'动作。并且在保存页面后,用户将被警告他也将离开网站。 commandButton的代码如下:
<p:commandButton value="save" id="saveButton" validateClient="true" actionListener="#{myView.save}" update="description name" style="float:right"> </p:commandButton>
我试图在ajax调用中添加“执行表单”:
<p:commandButton value="save" id="saveButton" validateClient="true" actionListener="#{myView.save}" update="description name" style="float:right">
<p:ajax execute="@form">
</p:commandButton>
但它也没有用。 如果按钮设置为$ ajax =“false”$一切正常,但我想避免它。 有人可以帮忙吗? 非常感谢!
答案 0 :(得分:0)
在您的脚本中添加此function
。
function save(){
alert('I am here');
setConfirmUnload(true);
}
并在commandButton中插入onclick="save();"
答案 1 :(得分:0)
是否可以为您的按钮添加额外属性type =“submit”? 不知道这是否适用于primefaces,但在其他框架中工作:)