我有asp:LinkButton,输入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'));" />
LinkButton最初在代码隐藏中被禁用为:
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时; LinkButton呈现为
<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('lnkViewPdf','')">View Office Pdf</a>
HTH。
答案 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)
如果您使用以下方法禁用LinkButton:
if (!IsPostBack)
{
this.lnkViewPdf.Enabled = false;
}
然后href attibute将不会显示在HTML中。如果您手动添加disabled属性:
if (!IsPostBack)
{
lnkViewPdf.Attributes.Add("disabled", "disabled");
}
然后你的代码就可以了。
哦!..还有最后一件事:你需要为LinkButton设置PostBackUrl属性。你错过了你的例子。