javascript - 打开时切换对话框 "modal"属性

标签 javascript jquery

因此,当对话框已打开并隐藏对话框后面的覆盖层时,我需要将模式设置为 false。这是我尝试过的,

当我打开对话框时,我有一组函数可以查询日历上的拖放事件(如果它是多个事件),那么我需要使对话框不是模态的,并允许与日历进一步交互以移动另一个事件。 .然后验证。

$(this).dialog("option", "modal", false);

当我使用它时,它不会使对话框的覆盖层隐藏。我有什么明显的错误吗???

完整代码:

$('<div id="dragDropDialog" title="Appointment Change Information">Change Appointment<p>Time: ' + CV.timeString(fromTime) + ' to ' + CV.timeString(toTime) + '</p> <p>On = ' + (weekday[day]) + ' the ' + CV.dateAbbrv(monthDay) + ' of ' + (months[month]) + ' ' + year + ' </p><p> Inspector ' + $eventDateAndTime.inspector["name"] + '</p></div>').dialog({
                  autoOpen: true,
                  width: 600,
                  modal: true,
                  dialogClass: 'dragDropDialog',
                  buttons: {
                    Move: function() {

                            var counterForFinal = 0;
                            $.each(inspectorEventList, function(index, evt) {
                                if (jQuery.data(eventBeingDragged, "fromTo").eventId == evt.eventId) {
                                    counterForFinal++;
                                }
                            });

                            if (counterForFinal > 1) {
                                $(this).dialog("option", "modal", false);
                                alert($(this).dialog("option", "modal"));
                            } else {

                        $(this).dialog("close");
                        $(ui.draggable).animate({opacity: 0}, 200);
                        ui.draggable.css({top:ui.position.top, left:ui.position.left});
                        CV.updateDroppedEvent($calEvent, $eventDateAndTime);
                        dragEndHelp.css({"display": "none"});
                        $(ui.draggable).animate({opacity: 1}, 1000);
                        var bgColorStore = $(ui.draggable).css("background-color");
                        $(ui.draggable).animate({backgroundColor: "#FF2222"}, 500, function() {
                            $(ui.draggable).animate({backgroundColor: bgColorStore}, 1000);
                        });
                            } // if there the event is not a final then we can just move it

                    }, Copy: function() {
                        $(this).dialog("close");
                        ui.draggable.css({top:ui.draggable.top, left:ui.draggable.left});

                        $(dragEndHelp).animate({opacity: 0}, 200);
                        $(ui.draggable).animate({opacity: 0}, 200);

                        $(dragEndHelp).animate({opacity: 1}, 500);
                        $(ui.draggable).animate({opacity: 1}, 500);

                        var bgColorStore = $(ui.draggable).css("background-color");
                        var bgColorStore = $(dragEndHelp).css("background-color");

                        $(ui.draggable).animate({backgroundColor: "#FF2222"}, 500, function() {
                            $(ui.draggable).animate({backgroundColor: bgColorStore}, 1000);
                        });
                        $(dragEndHelp).animate({backgroundColor: "#FF2222"}, 500, function() {
                            $(dragEndHelp).animate({backgroundColor: bgColorStore}, 1000);
                        });

                   CV.updateDroppedEvent($calEvent, $eventDateAndTime);
                    }, Cancel: function(event, ui) {
                        dragEndHelp.css({"display": "none"});
                  $(this).dialog("close");
              }
        },
        close: function(event, ui) {
            $(this).dialog("destroy");
        },
        open: function(event, ui) { 

    //// SOME UI CHANGES TO MAKE BUTTONS MORE INTUITIVE
    var buttons = $('.dragDropDialog .ui-dialog-buttonpane').children('button');

    ////ADD ICON CLASS ACCEPTANCE
    buttons.removeClass('ui-button-text-only').addClass('ui-button-text-icon');

    ////CHANGE THE BUTTONS DEFAULT SATE TO RED AND GREEN
    $(buttons[0]).removeClass('ui-state-default').addClass('ui-state-submit');
    $(buttons[1]).removeClass('ui-state-default').addClass('ui-state-copy');
    $(buttons[2]).removeClass('ui-state-default').addClass('ui-state-cancel');

    ////APPEND THE ICONS TO THE BUTTON
    $(buttons[0]).append("<span class='ui-icon ui-icon-check'></span>");
    $(buttons[1]).append("<span class='ui-icon ui-icon-copy'></span>");
    $(buttons[2]).append("<span class='ui-icon ui-icon-close'></span>");

    ////PUSH THE CANCEL BUTTON TO THE LEFT SIDE OF THE DIALOG
    //$(buttons[2]).css('position','absolute').css('left','25px');
        }
                   });

最佳答案

我从开发人员 X 继承了一个使用 jQuery UI 的项目。开发人员 X 没有使用 jQuery UI,而是使用她自己的代码使对话框看起来是“模态的”。她使用了一个“mask”元素,并使用 jQuery.fadeIn 和 jQuery.fadeOut 来切换该元素。你可以做类似的事情来获得你想要的效果。您可以尝试使用一些像这样的 CSS 来开始:

  #mask
  {
      position: absolute; /* important */
      top: 0px; /* start from top */
      left: 0px; /* start from left */
      height: 100%; /* cover the whole page */
      width: 100%;  /* cover the whole page */
      display: none; /* don't show it '*/
      background-color: black;
    }

  .modal_window
  {
      position: absolute; /* important so we can position it on center later */
      display: none; /* don't show it */
      font-weight: bold;
  }

关于javascript - 打开时切换对话框 "modal"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711065/

相关文章:

javascript - 尝试在用户单击时突出显示表格中的一行

jquery - jquery验证的问题

javascript - 如何在 Bootstrap 4 中实现全高列

jquery - ajax成功后如何向下滚动div?

javascript - 在 D3.js 中使用字典绘制图表

javascript - 如何防止拖动元素时页面滚动?

javascript - js 列出对象的路径信息

javascript - react-native-webview 调用时崩溃应用程序

javascript - 将页面拖到第二台显示器时图标消失

javascript - 如何将所有匹配元素视为一个集合?