【问题标题】:Trigger the status of the client side validation触发客户端验证的状态
【发布时间】:2011-07-04 15:48:17
【问题描述】:

我有一个带有多个文本字段的 .net 表单,其中一些用RequiredFieldValidator 标记。

<asp:TextBox MaxLength="150" Width="300" runat="server" ID="CityTXT"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="CityTXT"
                                    ValidationGroup="PersoanlDetailsVG" runat="server" ErrorMessage="Enter City">*</asp:RequiredFieldValidator>

只有当所有这些字段都有值时,我才需要调用 javascript 函数。

如何触发特定客户端验证的状态?

谢谢

编辑

我尝试实现 Page_ClientValidate 但页面没有回发。

这是我的代码

function Validate() {
        var res = Page_ClientValidate("PersoanlDetailsVG");

        if (res == true) {
            //do someting
        }
        return res;
    }

<asp:Button Visible="false"  CssClass="Proceedtopayment" runat="server"  OnClientClick="Validate();return false;" OnClick="ConfirmBooking" CausesValidation="true" ValidationGroup="PersoanlDetailsVG" />

它从不执行 ConfirmBooking()

【问题讨论】:

  • how to check a particular asp.net validation control is valid ? 的可能重复项 - 请参阅我对链接问题的回答 - 如果字段中从未有值,RequiredFieldValidator 将首先返回 IsValid。更好的选择是 CustomValidator 和 RequiredFieldValidator。
  • @Zhaph - Ben Duguid 感谢您的评论,但我不需要对特定对象进行验证。我需要触发现有验证的状态
  • @StrouMfios:根据您的更新,我已经edited my answer

标签: asp.net validation requiredfieldvalidator


【解决方案1】:

看看来自 ASP.NET 的clientside validation API

您可以在客户端检查 Page_IsValid 是否检测所有验证器是否有效。

一个布尔变量,表示 页面当前是否有效。 验证脚本保持这一点 随时约会。

例如:

if(Page_IsValid){
   foo();
}

必要的WebUIValidation.js-文件会自动包含在

  • 页面包含一个或多个验证 Web 控件。
  • “高级”浏览器正在访问该页面。

根据您更新的答案:您的页面不会回发,因为您在所有情况下都返回false onClientClick

如果验证成功,如果要在 Button-Click 上回发,则必须返回验证结果:

OnClientClick="return Validate();"

@Brian 的解决方案与我的不同之处在于 Page_ClientValidate() 是一个触发验证的函数(并在内部返回 Page_IsValid),而 Page_IsValid 仅返回验证的状态。由于验证脚本始终保持Page_IsValid 处于最新状态,因此调用Page_ClientValidate() 是多余的。

【讨论】:

  • 使用 Page_IsValid() 方法,执行客户端验证,但它是从服务器端调用的。如果我错了,请纠正我。
  • 服务器端没有执行客户端验证的方法,因为这会产生矛盾。您的意思是Page 的一个属性,称为IsValid。这个属性应该在Page.Validate() 触发服务器端的所有验证器之后调用。您应该始终检查服务器端和客户端。但回到主题:我在答案中提供了一个链接,您可以在其中找到所有客户端验证变量和函数。
  • 感谢 Tim Schmelter,很棒的评论。
【解决方案2】:

在这种情况下最好使用自定义验证器,并让客户端验证功能并在提供值的情况下完成您的工作

【讨论】:

    【解决方案3】:

    当您在您的 aspx 页面中包含 asp .net 验证器时,一系列验证脚本会自动包含在您的客户端呈现页面中。这些脚本包含一个名为“Page_ClientValidate”的函数,调用该函数时会检查那些支持客户端检查的验证器的验证器状态。

    您可以使用以下方法检查客户端验证状态;

    var validPage = Page_ClientValidate();
    

    【讨论】:

    • 我实施了您的建议,但页面没有回发。我编辑了我的初始帖子
    猜你喜欢
    • 2011-05-27
    • 1970-01-01
    • 2013-11-23
    • 2011-06-23
    • 1970-01-01
    • 2017-05-08
    • 2013-11-19
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多