如何制作一个p:commandButton提交表单(未调用JavaScript提交动作)

时间:2017-05-31 08:15:25

标签: javascript jsf primefaces

我正在使用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”$一切正常,但我想避免它。 有人可以帮忙吗? 非常感谢!

2 个答案:

答案 0 :(得分:0)

在您的脚本中添加此function

function save(){
    alert('I am here');
    setConfirmUnload(true);
}

并在commandButton中插入onclick="save();"

答案 1 :(得分:0)

是否可以为您的按钮添加额外属性type =“submit”? 不知道这是否适用于primefaces,但在其他框架中工作:)