【问题标题】:Hide and Show div's on Button Click in a UpdatePanel在 UpdatePanel 中单击按钮时隐藏和显示 div
【发布时间】:2010-11-29 13:16:26
【问题描述】:

我正在使用 UpdatePanel ---> LinkBut​​ton --> Div ---> 表结构。 当我单击链接按钮时,div 必须首先显示表格格式,并且必须在其 OnClick 事件中执行代码,我面临的问题是我尝试了如下所示的许多 jquery 函数:

<asp:LinkButton ID="lnkbtnUnitAdd" runat="server" OnClientClick="Toggledivs()"  OnClick="lnkbtnAdd_Click" Text="Add" ></asp:LinkButton>

即使我用过:

$(document).ready(function()
{ 
    $("#lnkbtnUnitAdd").click(function () {
        $("#divUnit").show("slow"); return false;
    });
});

function Toggledivs()
{
    $("#lnkbtnUnitAdd").click(function () {
        $("#divUnit").show("slow"); return false;
    });
}

或不使用 LinkBut​​ton 中的 OnClientClick 属性

结果是一样的,因为函数在按钮 Onclient click 或 document.ready function() 中返回 false,因此按钮 Onclick 事件没有触发。

如果我将 return false 注释掉,则 div 将无法正确显示。

由于整个过程都在更新面板中运行,请帮助如何处理。

【问题讨论】:

    标签: asp.net jquery updatepanel


    【解决方案1】:

    在这种情况下,您可能必须使用 Control.ClientID。试试这个

    $(document).ready(function(){ 
        $("#<%=lnkbtnUnitAdd.ClientID%>").click(function () {
            $("#divUnit").show("slow"); return false;
        });
    });
    

    我不建议在 HTML 中添加事件处理程序。但是下面的代码应该可以工作。您不必再次分配点击事件。

    function Toggledivs()
    {
        $("#divUnit").show("slow"); 
        return false;
    }
    

    return true;
    

    如果您希望onclick 函数被执行。

    【讨论】:

    • 这是真正的问题发生的地方,因为函数返回 false,我无法进入该按钮“lnkbtnUnitAdd”的 OnClick 事件,我在其中编写了一些服务器端代码禁用和启用一些控件
    • 而不是return false;return true; 以便onclick 函数被执行。
    【解决方案2】:

    如果我明白你的意思,应该这样做: __doPostBack 只能在动画完成后调用,您可以通过将回调函数传递给 jquery 的 show 的第二个参数来实现。 更新

    $(document).ready(function()
    { 
        $("#lnkbtnUnitAdd").click(function (e) {
            var btnName = $(this).attr('name');           
            $("#divUnit").show("slow",function(){
               __doPostBack(btnName,''); //now call the actual postback event      
            });
    
            e.preventDefault(); //prevent default postback behavior
            return false;
        });
    });
    

    【讨论】:

    • 其实当我深入我的代码时,我发现我的代码结构看起来像 Updatepanle --->linkbutton---> UpdatePanel--->div 标签,所以当我点击按钮时页面加载时设置为 display:none 的 div 标签部分显示,然后进入默认模式(类似于切换),你知道如何克服这个问题
    • 当我最初遵循你的建议时它没有用,但后来当我编写下面的代码时它起作用了,但问题是 function Toggledivs() { setTimeout(function() { alert('hi '); $("#divUnit").show("slow");},0); } 但问题是如何克服警告框
    • 嘿,如果你不介意,可以去这个页面下载附件daniweb.com/forums/thread328075-3.html,因为我更关心解决这个问题,请帮忙,提前谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 2016-05-21
    • 1970-01-01
    • 2021-06-14
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    相关资源
    最近更新 更多