【问题标题】:asp.net OnClientClick not rendered for initially disabled Buttonasp.net OnClientClick 未为最初禁用的按钮呈现
【发布时间】:2011-08-24 19:25:08
【问题描述】:

我有一个禁用的 asp.Button,稍后我会使用 JavaScript 启用它。像这样

<asp:Button ID="btnSave" runat="server" Text="Save" Enabled="false" OnClientClick="; return ValidateFields();" OnClick="btnSave_Clicked" />

但是,当控件被禁用时,“onclick”方法不会呈现为 html。我的解决方法是在 PageLoad 中添加以下代码。

btnSave.Attributes["onclick"] = "return ValidateFields();";

有没有更方便的解决方法?

谢谢

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    你可以使用html属性来禁用

    <asp:Button disabled="disabled" ID="btnSave" runat="server" Text="Save" Enabled="false" OnClientClick="; return ValidateFields();" OnClick="btnSave_Clicked" />
    

    我假设您然后在客户端启用它?如果是这样,那么您可以使用以下命令启用它:

    document.getElementById('MainContent_btnSave').removeAttribute('disabled'); //or jquery alternative where MainContent_btnSave is the clientid of the control
    

    【讨论】:

    • 是的,我确实通过更改禁用值来启用客户端的按钮。谢谢你的建议。它有效。
    【解决方案2】:

    嗯,很明显为什么框架的行为是这样的:如果一个按钮被禁用,为什么它应该有一个onclick 事件处理程序?如果它被禁用,用户将无法单击它!因此,框架会移除该属性。

    所以,我认为除了手动附加属性之外,您没有其他选择。

    【讨论】:

    • 真的很有趣....这种方法似乎忽略了客户端也发生了事情。嗯嗯!
    • MS 应该给我们更好的选择——比如 Disabled="" 和 Enabled="",因为两者完全不同。
    • 如果 Visual Studio 至少会在这种情况下发出警告,那就太好了。 “您的 OnClientClick 将被忽略,因为您设置了 Enabled='false'”。
    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多