【问题标题】:Show/hide a DIV with javascript fails - dialogbox locked使用 javascript 显示/隐藏 DIV 失败 - 对话框被锁定
【发布时间】:2020-06-26 17:06:56
【问题描述】:

我有这个 ASPX:

<div id="IsAccountingOk" class="modalDialog">
    <div>
        <a href="#close" title="Luk" class="close">X</a><br />
        <asp:Label ID="lblIsAccountingOkHeader" runat="server" Text="Kassekladde:" Font-Size="Large"></asp:Label><br /><br />
        <asp:Label ID="lblMessage" runat="server" Text="Der skal først vælges regnskabsår!"></asp:Label><br />
        <br />
        <asp:Button ID="btnIsAccountingOK" runat="server" Text="Ok" OnClick="btnIsAccountingOK_Click"/>
    </div>
</div>

还有以下 CSS:

.modalDialog {
    position: fixed;
    font-family: Arial, Helvetica, sans-serif;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0,0,0,0.8);
    z-index: 99999;
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    pointer-events: none;
}
.modalDialog:target {
    opacity: 1;
    pointer-events: auto;
}
.modalDialog > div {
    width: 400px;
    position: relative;
    margin: 10% auto;
    padding: 5px 20px 13px 20px;
    border-radius: 10px;
    background: #fff;
    background: -moz-linear-gradient(#fff, #999);
    background: -webkit-linear-gradient(#fff, #999);
    background: -o-linear-gradient(#fff, #999);
}
.close {
    background: #606061;
    color: #FFFFFF;
    line-height: 25px;
    position: absolute;
    right: -12px;
    text-align: center;
    top: -10px;
    width: 24px;
    text-decoration: none;
    font-weight: bold;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    border-radius: 12px;
    -moz-box-shadow: 1px 1px 3px #000;
    -webkit-box-shadow: 1px 1px 3px #000;
    box-shadow: 1px 1px 3px #000;
}
.close:hover {
    background: #00d9ff;
}

我的意图是将 DIV 显示为一个对话框 - 但该对话框已完全锁定,我也无法访问其中的元素和关闭按钮。此外,是否可以在后台访问其余控件 - 不应访问这些控件。

我想我必须处理“指针事件”选择器 - 但我不知道该怎么做 :-(

提前致谢。

问候,迈克尔

(我已根据不透明度样式选择器更新了我的 CSS。)

【问题讨论】:

    标签: javascript c# html css asp.net


    【解决方案1】:

    你设置了错误的元素样式属性,你应该设置opacity来显示元素:

    $(document).ready(function () {
        document.getElementById('IsAccountingOk').style.opacity = 1;
    });
    .modalDialog {
        position: fixed;
        font-family: Arial, Helvetica, sans-serif;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        background: rgba(0,0,0,0.8);
        z-index: 99999;
        opacity: 0;
        -webkit-transition: opacity 400ms ease-in;
        -moz-transition: opacity 400ms ease-in;
        transition: opacity 400ms ease-in;1
        pointer-events: none;
    }
    .modalDialog:target {
        opacity: 1;
        pointer-events: auto;
    }
    .modalDialog > div {
        width: 400px;
        position: relative;
        margin: 10% auto;
        padding: 5px 20px 13px 20px;
        border-radius: 10px;
        background: #fff;
        background: -moz-linear-gradient(#fff, #999);
        background: -webkit-linear-gradient(#fff, #999);
        background: -o-linear-gradient(#fff, #999);
    }
    .close {
        background: #606061;
        --color: #FFFFFF;
        line-height: 25px;
        position: absolute;
        right: -12px;
        text-align: center;
        top: -10px;
        width: 24px;
        text-decoration: none;
        font-weight: bold;
        -webkit-border-radius: 12px;
        -moz-border-radius: 12px;
        border-radius: 12px;
        -moz-box-shadow: 1px 1px 3px #000;
        -webkit-box-shadow: 1px 1px 3px #000;
        box-shadow: 1px 1px 3px #000;
    }
    .close:hover {
        background: #00d9ff;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="IsAccountingOk" class="modalDialog">
        <div>
            <a href="#close" title="Luk" class="close">X</a><br />
            <asp:Label ID="lblIsAccountingOkHeader" runat="server" Text="Kassekladde:" Font-Size="Large"></asp:Label><br /><br />
            <asp:Label ID="lblMessage" runat="server" Text="Der skal først vælges regnskabsår!"></asp:Label><br />
            <br />
            <asp:Button ID="btnIsAccountingOK" runat="server" Text="Ok" OnClick="btnIsAccountingOK_Click"/>
        </div>
    </div>

    【讨论】:

    • @MichaelEriksen,查看您的 CSS,您似乎设置了 opacity 属性而不是 display,请查看更新后的答案:)
    • 感谢您的回复。我会看一下 - 但同时我可以看到我无法获得 ClientID。所以我觉得我得先看看这个问题。
    • @MichaelEriksen,最初我以为元素的 id 是由 ASP 创建的,但事实并非如此,您必须仅将 ClientID 用于服务器生成的控件,例如 lblIsAccountingOkHeaderlblMessagebtnIsAccountingOK
    • 感谢您的回答。我现在已经有了使用不透明度选择器显示的对话框。但是对话框是锁定的,背景是解锁的!任何想法如何解决这个问题?
    【解决方案2】:

    您可以在 jQuery 中使用隐藏或显示功能。 或者如果你想设置动画,使用fadeOut(隐藏)或fadeIn(显示)。

    首先,你必须隐藏元素。所以:

    隐藏元素示例:

    $('#exampleID').hide();
    

    $('#exampleID').fadeOut();
    

    如果你想显示元素使用这个:

    显示元素示例:

    $('#exampleID').show();
    

    $('#exampleID').fadeIn();
    

    注意:使用 jQuery 3xx 。将元素的 ID 替换为 exampleID。

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多