【发布时间】:2011-03-23 14:15:08
【问题描述】:
我有一页我想在其中包含几个由 SimpleModal 实现的模态窗口实例。具体场景如下:
- 页面已加载。
- 用户点击一个按钮来打开一个模态窗口。
- 在模式中,用户插入(输入)他需要的所有信息。
- 数据已验证。 如果验证失败,应该会显示一个新的模式并显示错误。这个概念是有一个模式窗口,应该像 javascript alert() 函数一样工作。
- 当错误可见时,之前的模式应该会消失。一旦用户单击“确定”,错误就会消失,并且旧的模式应该会出现。
现在,我搜索了一个答案,我看到 Eric Martin(SimpleModal 的开发者)的几篇帖子谈论拥有多个模态窗口。貌似 SimpleModal 不支持,他推荐的是把modal的内容替换成新的。
我想做的是:
- 在显示警报之前,我会保留打开模式的 ID。
- 隐藏所有打开的模式(隐藏 div)。
- 显示警报并绑定确定按钮。
- 当用户单击“确定”时,我关闭(警报的)当前模式,获取旧 div 的名称,并通过调用 ShowDialog("getSubsidiariesForCustomer") 再次显示它。
我的问题是当我尝试运行最后一个命令时它不起作用。经过调查,如果在某个元素上调用了 modal() 函数,SimpleModal 插件的实现似乎会保留一个标志。
仅用于一般知识:
- 我使用的是简单模式 1.41
-
好像我在 JS 的第 216 行失败了:
// 不允许多次调用 如果(s.d.data){ 返回假; }
我的代码就在本节之后: 我从运行“jBtnNew_Click”的逻辑开始:
Admin.BL.SettingsPage.jBtnNew_Click=function(e)
{
Admin.BL.EcmSettings.ShowDialog("#getSubsidiariesForCustomer");
alert(""); //Just for debugging
Admin.BL.EcmSettings.ShowAlert();
}
Admin.BL.SettingsPage.ShowAlert=function()
{
var id = $("div.model:visible").eq(0).attr("id");
$("#alertBtnOk").one("click", function(e){
$.modal.close();
if (id != undefined)
{
Admin.BL.SettingsPage.ShowDialog(id);
}
}
);
Admin.BL.SettingsPage.ShowDialog("#alert");
}
Admin.BL.SettingsPage.ShowDialog=function(dialogId)
{
if (dialogId.indexOf("#") < 0)
{
dialogId = "#" + dialogId;
}
$("div.model").hide();
$("#dialog").modal({position:new Array("20%"),
overlayId:"dialog-overlay",
containerId:"confirm-container"});
$(dialogId).show();
}
这是我的 HTML:
获取客户的子公司 客户ID: 顾客姓名: 这是我的警报
任何解决此问题的帮助将不胜感激!
谢谢:)
【问题讨论】:
标签: jquery simplemodal