如何在客户端启用asp:LinkBut​​ton

时间:2011-05-26 15:22:54

标签: javascript .net asp.net linkbutton

我有asp:LinkBut​​ton,输入Button定义为:

<asp:LinkButton ID="lnkViewPdf" runat="server" CssClass="icoMiniTest" ClientIDMode="Static" >View Office Pdf</asp:LinkButton>   
<input id="Button2" type="button" value="TestEnable" onclick="TestEnable(document.getElementById('lnkViewPdf'));"  />

LinkBut​​ton最初在代码隐藏中被禁用为:

    if (!IsPostBack)
    {
        this.lnkViewPdf.Enabled = false;
    }

并且需要在单击Button2时启用,因此我调用javascript函数以启用链接:

function TestEnable(lnkbutton) {
        alert('TestEnable() called');
        alert(lnkbutton.id);
        lnkbutton.disabled = "";
        //$("#lnkbutton").removeAttr('disabled');  //even this doesn't work
    }

但我无法启用链接按钮。

我错过了什么吗?

谢谢!

__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __

任何有兴趣解决上述问题的人:
在代码隐藏中:

this.lnkViewPdf.Attributes["disabled"] = "disabled";
this.lnkViewPdf.Attributes["onclick "] = "return false";

.js:

function TestEnable(lnkbutton) {
         $(lnkbutton).removeAttr('disabled');
        lnkbutton.onclick = "";    
}

注意:设置lnkViewPdf.Enabled = false时; LinkBut​​ton呈现为

<a id="lnkViewPdf" class="aspNetDisabled icoMiniTest">View Office Pdf</a>

查看样式类 aspNetDisabled ,由ASP.Net添加的内容 但是,如上所示,从代码隐藏设置disabled / onclick属性,将Linkbutton渲染为:

<a id="lnkViewPdf" class="icoMiniTest" disabled="disabled" onclick ="return false" href="javascript:__doPostBack(&#39;lnkViewPdf&#39;,&#39;&#39;)">View Office Pdf</a> 

HTH。

6 个答案:

答案 0 :(得分:1)

立即尝试......

function TestEnable(lnkbutton) {
    lnkbutton.disabled = "";
    lnkbutton.onclick = "";
}

答案 1 :(得分:1)

在后面的代码中,不是通过设置Enabled = false来禁用,而是设置:

    lnkViewPdf.Attributes["disabled"] = "disabled"

所以你的javascript函数:

    function TestEnable(lnkbutton) {
    alert('TestEnable() called');
    alert(lnkbutton.id);
    lnkbutton.disabled = "";
}

您的加价:

    <asp:LinkButton ID="lnkViewPdf" runat="server" CssClass="icoMiniTest" ClientIDMode="Static" >View Office Pdf</asp:LinkButton>   
    <input id="Button2" type="button" value="TestEnable" onclick="TestEnable(document.getElementById('<%= lnkViewPdf.ClientID %>')); return false;"  />

你的代码隐藏:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            lnkViewPdf.Attributes["disabled"] = "disabled";
    }

答案 2 :(得分:1)

$("#<%=lnkViewPdf.ClientID %>").removeAttr("disabled");

答案 3 :(得分:0)

您需要知道.Net构造的名称才能完成它。最简单的方法是,如果可以的话,将其设置在页面的开头:

<script language="javascript">

var lnkbuttonToEnableId = "<%= this.lnkViewPdf.ClientId %>";

function TestEnable() {
        alert('TestEnable() called');
        lnkbuttonToEnableId.disabled = false;
}

</script>

无论如何,让它工作的唯一方法是以某种方式将lnkViewPdf的ClientId传递给函数。

答案 4 :(得分:0)

试试这两个:

<input id="Button2" type="button" value="TestEnable"
    onclick="TestEnable(document.getElementById('<%= lnkViewPdf.ClientID %>'));"  />

$("#<%= lnkViewPdf.ClientID %>").removeAttr('disabled'); 

更新:由于您在服务器端禁用LinkButton,因此从href html元素中剥离<a>属性。为防止丢失该信息,您应该做的是禁用客户端上的LinkButton,然后在需要时启用它。此外,您只需删除href属性,而不是禁用它。

首先,您需要保留href并将其删除,以便<a>链接被禁用:

$(document).ready(function () {
    var $lnkViewPdf = $("#lnkViewPdf");

    $lnkViewPdf.data("href", $lnkViewPdf.attr("href"));
    $lnkViewPdf.removeAttr("href");
});

以及启用它的功能:

function TestEnable(lnkViewPdfId) {
    var $lnkViewPdf = $("#" + lnkViewPdfId);

    $lnkViewPdf.attr("href", $lnkViewPdf.data("href"));
}

答案 5 :(得分:0)

如果您使用以下方法禁用LinkBut​​ton:

if (!IsPostBack)
{
    this.lnkViewPdf.Enabled = false;
}

然后href attibute将不会显示在HTML中。如果您手动添加disabled属性:

if (!IsPostBack)
{
    lnkViewPdf.Attributes.Add("disabled", "disabled");
}

然后你的代码就可以了。

哦!..还有最后一件事:你需要为LinkBut​​ton设置PostBackUrl属性。你错过了你的例子。