【问题标题】:Remove onblur validation from ASP.net Control从 ASP.net 控件中删除 onblur 验证
【发布时间】:2011-07-08 08:51:29
【问题描述】:

我想删除 asp.net 验证的 onblur 事件,并且仅在单击按钮时调用验证。有谁知道如何做到这一点?

谢谢

【问题讨论】:

    标签: .net asp.net validation


    【解决方案1】:

    您可以从给定元素中删除验证事件

    <body onload="removeValidationEvents();">
    

    和脚本:

        <script type="text/javascript">
        function removeValidationEvents() {
            document.getElementById('<%=yourTextbox.ClientID%>').onkeypress = null;
            document.getElementById('<%=yourTextbox.ClientID%>').onblur = null;
            document.getElementById('<%=yourTextbox.ClientID%>').onchange = null;
        }
        </script>
    

    请注意,ASP.NET 根据您要验证的控件使用不同的事件(例如,您可能需要将 onclick 添加到上面的列表中)。

    另请注意,这确实是一个非常丑陋的 hack(如下面的 cmets 所示),您应该自担风险使用它。

    【讨论】:

    • 不,不,不 - 这是真正的黑客......不是修复。这可能会产生一些意想不到的结果。
    • 我完全同意。这是一个丑陋的黑客,它可能会产生副作用。它虽然有效,但由提出要求的人决定他是否应该冒险这样做。但是是的 - 我的错没有指出使用它是危险的。为清晰起见进行了编辑。谢谢你们。
    【解决方案2】:

    您必须为按钮提供 ValidationGroup 属性,该按钮是单击、文本框和验证控件。所有人的名字都一样。

    然后您必须通过右键单击控件来取消设置 onblur 事件,选择属性,然后通过单击属性窗口顶部的 flash 按钮进入事件部分。然后找到 onblur 事件并从其值单元格中删除调用事件。

    【讨论】:

    • 嘿。谢谢。我在所有输入(包括按钮)上都有相同的验证组。你的意思是我的输入作为控制?我看不到文本框的事件“flash”按钮?
    【解决方案3】:

    事实上,这是一个内置功能,您可以通过在验证器上设置“显示”属性来启用它:

    <asp:RequiredFieldValidator runat="server" ID="val" Text="Please enter text" ErrorMessage="No text" ControlToValidate="txtText" Display="None" EnableClientScript="true" />
    

    现在,在提交验证期间,只有“无文本”信息才会显示在 SummaryValidator 中(如果有的话)。

    我假设仍在执行验证,但是您看不到结果。你是这个意思吗?

    【讨论】:

    • 不,这不是我想要的。我希望验证确实显示,但仅在单击按钮时显示,而不是在文本框上的 onblur 事件上显示。
    • 因此,您有两个选择: 1. 摆脱 javascript 验证并仅执行服务器端验证,这基本上比您预期的结果要好,当然您会在这里有额外的服务器往返。 2.编写自定义javascript行为,在onblur期间排除验证机制 - 这可以通过a)有点hacky javascript模块(有点类似于Svetlin Panayotov的想法但更不引人注目)或通过覆盖基本验证器机制并稍微改变它来实现你的目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2021-09-17
    • 2013-04-25
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多