在JSF中警告未保存数据的用户

gre*_*reg 10 jsf

我想在用户点击链接导航离开当前页面之前警告用户表格中未保存的任何数据,而不保存.在JSF中实现此目的的更好方法是什么,以便在所有页面的单个位置完成此检查.任何建议表示赞赏.

Bal*_*usC 10

标准的JSF实现不提供开箱即用的功能.此外,这更像是客户端问题,而不是服务器端问题,所以你真的需要为JavaScript这样的客户端语言.由于为这个特定的功能需求编写与浏览器兼容的JavaScript代码并不是一件容易的事情,因此您需要使用一个JavaScript库来考虑这一点,比如jQuery.

这是一个完整的启动示例,说明如何在jQuery的帮助下实现这一目标.

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    $(document).ready(function() {
        // Set the unload message whenever any input element get changed.
        $(':input').change(function() {
            setConfirmUnload(true);
        });

        // Turn off the unload message whenever a form get submitted properly.
        $('form').submit(function() {
            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;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

只需将其粘贴到您的<head>模板中(最好也将原始<script>代码重构为自己的.js文件,并按src属性包含),无论您拥有哪个页面,它都能正常工作.


Kyl*_*ten 0

您可以做的就是向所有链接添加 onclick。使用 jQuery,您可以执行以下操作:

$($('a').click(function(){
    if(unsavedWork){
        return confirm("You have not saved your work, would you like to leave anyway?");
    }else{
        return true;
    }
}););
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3083 次

最近记录:

7 年,7 月 前