jquery脏表单手动设置干净

问题描述 投票:0回答:1

我正在使用 jquery dirrty 插件来检查表单的状态,并防止它在有一些未保存的更改时重新加载。

链接到 jquery.dirrty github

流量:

1)我已经初始化了 jquery.dirty 如下

$(function(){
    initializeDirtyForm();
})

/** dirty form initialization*/
function initializeDirtyForm(){
    $("#uAForm").dirrty().on("dirty", function(){
        $("#uAFormSubmit").removeAttr("disabled");
    }).on("clean", function(){
        $("#uAFormSubmit").attr("disabled", "disabled");
    });
}

2)页面上有一个表格,当它单击 td 单元格时,它会进行 ajax 调用。

function ajaxCallEdit()
{
    var result = checkDirtyStatus();
        if(result === false) {
            return;
        }
    $.ajax({
        ....
        ....
        ....
        ....
        success:function(){
           initializeDirtyForm();
        }
    )}
}

/** check if the form is dirty */
function checkDirtyStatus(){
    dirtyStatus = $("#uAForm").dirrty("isDirty");
    if(dirtyStatus == true){
        if (confirm("Changes you made may not be saved. Do you still want to reload?")) {
            return true;
        }else{
            return false;
        }
    }
}

如果表格脏了,它可以正常工作并显示警告消息。

问题

这是主要问题,如果我强制它重新加载(这意味着它实际上不会重新加载页面,而是会进行ajax调用),它仍然将表单的状态设置为脏。我尝试过重新初始化 jquery 表单,但该表单仍然被标记为脏。

为了更加确定表单的状态,我检查了状态并尝试控制台登录 ajaxSuccess。

....

success: function(){
    initializeDirtyForm();
    var result = checkDirtyStatus();
    console.log(result);
}

...

但是,安慰此结果,显示值为

undefined

我找不到与手动设置相关的任何文档,并且重新初始化未按预期工作。

所以,如果您是 javascript 向导,请检查上面附加的 jquery.dirrty.js 文件,并检查我是否可以从 js 文件触发以下部分或任何其他可以帮助我解决问题的 hack。

setClean: function(){
            this.isDirty = false;
            this.history[0] = this.history[1];
            this.history[1] = "clean";
        }

如果您需要更多详细信息,请告诉我。

javascript jquery jquery-dirtyforms
1个回答
1
投票

尝试 $("#uAForm").dirrty("setClean");

我只是需要做同样的事情,这对我有用。

干杯

© www.soinside.com 2019 - 2024. All rights reserved.