4

我正在尝试使用 jQuery 启用 .net LinkBut​​ton,但在 .NET 4.0 中情况发生了一些变化,仅使用 attr("disabled", "disabled") 或 removeAttr("disabled") 将不起作用。

这是按钮。

<asp:LinkButton ID="LinkButtonContinue" runat="server" Text="Continue" CssClass="button continue" Enabled="false"></asp:LinkButton>

呈现如下:

<a class="aspNetDisabled button continue" id="ContentPlaceHolder1_LinkButtonContinue">Continue</a>

请注意新添加的 aspNetDisabled 类。

所以我尝试了这个:

jQuery(".continue").removeAttr("disabled").removeClass("aspNetDisabled");

和这个:

jQuery(".continue").removeClass("aspNetDisabled");

两者都不起作用,因为没有要删除的禁用属性,所以我假设它使用 JS 来禁用它?

我将如何使用此类启用按钮?

有任何想法吗?

非常感谢

克里斯

4

4 回答 4

2

我认为问题是,当你有一个像生成的服务器端这样的按钮时,页面上会出现一些 javascript 废话,例如:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

javascript:__doPostBack('id','')并且按钮将在 href 上有类似的东西

我认为您应该尝试手动定义此 href 值服务器端(或在页面加载时使用 javascript 动态定义,使用生成的可怕 id 可能更容易)。

在您的实例中,没有 href 因此即使未禁用锚点也不会发生任何事情。

编辑: 避免禁用按钮服务器端并在页面加载时使用javascript禁用它不仅更容易吗?

于 2012-10-11T08:43:44.323 回答
1

也许这对你有用:

$('.continue').disabled = false;

也可以使用的另一种方法是:

$('.continue').attr("disabled", "");
于 2012-10-11T08:32:54.773 回答
0

试试这样的..

<head id="Head1" runat="server">
    <title></title>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>

    <style type="text/css">
        .disabled-link
        {
            color: Gray;
            cursor: default;
        }
    </style>

    <script type="text/javascript">

        $(function() {
            var linkButton1 = $('.continue'); // $('#<%= LinkButton1.ClientID %>')
            var href = linkButton1.attr('href');
            $('#<%= EnableButton.ClientID %>').click(function(e) {
                e.preventDefault();
                linkButton1.attr('href', linkButton1.attr('myCustomAttr')).removeClass('disabled-link');
            });

            $('#<%= DisableButton.ClientID %>').click(function(e) {
                e.preventDefault();
                linkButton1.attr('href', '#').attr('myCustomAttr', href).addClass('disabled-link');

            });
        });

    </script>

</head>
<body>
    <form id="form1" runat="server">
    <asp:LinkButton ID="LinkButton1" runat="server"  CssClass="button continue" PostBackUrl="test.aspx">LinkButton</asp:LinkButton>
    <br />
    <asp:Button ID="DisableButton" runat="server" Text="Disable" />
    <asp:Button ID="EnableButton" runat="server" Text="Enable" />
    </form>
</body>
于 2012-10-11T08:35:29.093 回答
0

仅使用:

$('.continue').removeClass("aspNetDisabled");

我猜应该工作

于 2012-10-11T08:13:07.020 回答