我正在设置一个小窗口来设置和更新 Web 应用程序中不同模块的参数,为此,我使用了一个 jQueryUI 对话框,该对话框当时从每个模块加载设置。我的问题是,如果您点击取消按钮,即使我之前进行了更改并在再次打开对话框并取消之前保存了它们,它也会将所有配置重置为初始状态。
另外,我希望关闭“X”按钮具有与取消按钮相同的行为。
var appDiv = $(Container).find(".divAppAdmin")[0];
var backupDiv = appDiv.innerHTML;
var closedFunction = function() {
$(appDiv).dialog( "destroy" );
};
var closeFunction = function() {
$(appDiv).dialog( "close" );
$(Container).append(appDiv);
};
var cancelFunction = function() {
$(appDiv).dialog( "close" );
appDiv.innerHTML = backupDiv;
$(Container).append(appDiv);
}
$(appDiv).dialog({
"modal": true,
"title": "Edit",
"close": closedFunction,
"buttons": {
"Save": closeFunction,
"Cancel": cancelFunction
},
"minWidth": 600
});
一步一步:
1.打开对话框并引入一些更改,
2.保存更改,
3.再次打开对话框而不进行任何更改,
4.点击按钮取消。
此时,我丢失了之前所做的更改并在步骤 2 中保存,并且模块恢复到步骤 1 之前的状态。
我知道使用
appDiv.innerHTML = backupDiv;
在这种特定情况下导致更改丢失,但如果我真的想撤消任何修改,它可以正常工作。
编辑:
我一直在挖掘,到目前为止,我找到了将取消行为复制到关闭“X”按钮的解决方案(如何找出 jquery 对话框是否在转义时关闭并执行一些代码):
var closedFunction = function (event, ui) {
if (event.originalEvent) {
cancelFunction();
}
$(appDiv).dialog("destroy");
};
通过在 closedFunction() 中添加这个 if 子句,我可以通过点击“X”按钮或按下 ESCAPE 键来捕获对话框何时关闭,然后我可以在 if 和 now 中调用 cancelFunction() 与如果点击取消按钮。