【问题标题】:Enable link button in gridview from javascript从javascript启用gridview中的链接按钮
【发布时间】:2014-05-29 21:29:24
【问题描述】:

我的网格视图中的项目模板包含一个文本框和一个链接按钮。我试图在我的 gridview onblur 事件中从后面的代码中启用链接按钮。

txtBox.Attributes.Add("onblur", "EnableSaveLinkButton('" + lnkSave.ClientID + "')");
 <asp:TemplateField HeaderText="Header">
 <ItemTemplate>
 <asp:TextBox ID="txtBox" runat="server" Width="50px" MaxLength="5"></asp:TextBox>
 &nbsp;<asp:LinkButton ID="lnkbtnSave" runat="server" CssClass="mediumFont" CausesValidation="false" CommandName="Save" Enabled="false">Save</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>


function EnableSaveLinkButton(lnkbtnsave){
    jQuery('#' + lnkbtnsave).attr('disabled', '');
//            jQuery("#" + lnkbtnsave).removeAttr("disabled");
    }

我尝试了两种方法,但都没有成功。谁能建议如何正确地做到这一点? 谢谢。

【问题讨论】:

  • 您添加到 txtBox 的函数名称 (EnableLinkButton) 与您定义的函数 (EnableSaveLinkButton) 不匹配

标签: c# javascript asp.net gridview


【解决方案1】:

lnkbtnSave不是链接控件的名字吗?

txtBox.Attributes.Add("onblur", "EnableLinkButton('" + lnkbtnSave.ClientID + "')");

您必须删除disabled 属性,而不是将disabled 设置为空。

jQuery('#' + lnkbtnsave).removeAttr('disabled');

【讨论】:

  • 我试过 jQuery('#' + lnkbtnsave).removeAttr('disabled') 但没有用。谢谢。
  • 在页面/html上做一个view source,那个链接的id是什么?
【解决方案2】:

$('#' + lnkbtnsave).removeAttr("disabled");应该管用。问题是,您是否在正确的时间调用它?例如,在调用 DOM 之前,您是否确保它已准备就绪?像这样:

function EnableSaveLinkButton(lnkbtnsave){
$('#'+ lnkbtnsave).removeAttr("disabled");
};

请在后面的代码中替换它

lnkbtnSave.Attributes.Add("onblur", "EnableLinkButton(this);");

【讨论】:

  • 这个函数调用和$()有什么关系?
  • 您传递的是文本框对象,而不是 LinkBut​​ton id。
  • 好的,但是所有者在 enableSaveLinkBut​​ton() 函数中传递 txtBox id..现在我必须更新它,所以你会说它是否有效
【解决方案3】:

试试这个..

function EnableSaveLinkButton(lnkbtnsave){
    var id = lnkbtnsave.id.toString();
    var i = id.split("_");
    index = i[2].toString();
    document.getElementById('lnkbtnSave' + index).disabled='true';
    }

【讨论】:

  • lnkbtnSaveGridView 单元格内,因此这仅适用于网格的第一个元素,前提是链接按钮具有属性 ClientIdMode = "static"
  • 它没有用。在页面源中,该元素具有值为“aspNetDisabled”的类属性。这需要以某种方式改变吗?谢谢。
【解决方案4】:

你可以给你的文本框和链接按钮的css类。然后创建一个禁用的内联样式

<asp:TextBox ID="txtBox" runat="server" cssClass="txt" Width="50px" MaxLength="5">   </asp:TextBox>
 &nbsp;<asp:LinkButton ID="lnkbtnSave" runat="server" CssClass="mediumFont lnk disabled" CausesValidation="false" CommandName="Save">Save</asp:LinkButton>

  <style type="text/css">
    .disabled {
        color: grey;
    }
</style>
<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery('.lnk').on('click', function (e) {

            if (jQuery(this).hasClass('disabled')) {
                e.preventDefault();

            }
            else {

                window.location.href = jQuery(this).attr('href');
                jQuery('.lnk').removeClass('disabled');
            }
        });

        jQuery('.txt').on('blur', function () {
            jQuery('.lnk').removeClass('disabled');

        });
    });

    </script>

我已经为您编译了一个工作示例here。根据您的需要对其进行调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多