Jquery模式对话框,用于停止页内操作

时间:2013-04-11 13:56:15

标签: php jquery modal-dialog

我已经阅读了很多关于jquery模式对话框的页面,但是仍然没有找到适合我需要它的东西。

如果用户进行了更改并点击了我们网站上的内部链接,我想要一个对话框,弹出3个按钮选项 - 保存,放弃和取消。如果他们点击保存,它将调用保存功能,然后离开页面。

但页面设置了选项卡,每个选项卡将不同的php页面加载到母版页中。链接不是硬链接,也不会重新加载页面。它们就像页内锚链接(然后加载一个php页面)。所以我无法捕获锚请求并稍后将其发送到地址栏。

我已经有了对话框,设置为模态。但是现在,当我单击另一个选项卡时,它会加载选项卡,同时弹出我的对话框。我希望它不会加载选项卡,直到在对话框中单击一个按钮。

confirm()函数完美地完成了这一操作。但我的模态对话框允许加载其他选项卡。你能帮我设置一个模态对话框,就像这个实例中的confirm函数一样吗?

这是我的Javascript函数:

        function fw_chkTabStatusFmla() {
        if (jsg_fwTabWatchFmla == false) {

           $(function() {
              $( "#tabWarnFmla" ).dialog({
                  resizable: false,
                  height:240,
                  width:400,
                  modal: true,
                  buttons: {
                    Cancel: function() {
                      $( this ).dialog( "close" );
                    },
                    "Discard": function() {
                            $( this ).dialog( "close" );
                           //discard changes and continue
                    },
                    "Save": function() {
                            $( this ).dialog( "close" );
                           //function to save changes and continue
                    },
                  }
              });
          });
      }
 }

这是我正在使用的旧版本。它会正确停止行为,但只允许两个按钮。

        function fw_chkTabStatusFmla() {
        if (jsg_fwTabWatchFmla == false) {
            var x = confirm("If you leave this tab without saving you may lose your changes.\n\nClick 'OK' to proceed without saving.");
            if (x == true)         {
                jsg_fwTabWatchFmla = true;
                setConfirmUnload(false);
                return true;
            } else {
                return false;
            }
        }
    }

在相关字段中进行更改时,我将jsg_fwTabWatchFmla变量设置为false。

这是我必须运行的功能。

    $(document).ready( function() {
            $('#tabs').tabs({
            select: function(event, ui) {                    
                return fw_chkTabStatusFmla();
            }
            });
    }

1 个答案:

答案 0 :(得分:1)

我认为您需要更改标签的操作。我不确定你正在使用什么Tabs插件。但是使用jQuery UI Tabs我会使用这种方法:

http://api.jqueryui.com/tabs/#event-beforeActivate

beforeActivate(event,ui)类型:tabsbeforeactivate

激活标签后直接触发。可以取消以防止选项卡激活。如果选项卡当前已折叠,则ui.oldTab和ui.oldPanel将为空jQuery对象。如果选项卡正在折叠,则ui.newTab和ui.newPanel将为空jQuery对象。