触发客户端验证的状态

时间:2011-07-04 15:48:18

标签: asp.net validation requiredfieldvalidator

我有一个带有多个文本字段的.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,但页面没有postBack。

这是我的代码

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()

3 个答案:

答案 0 :(得分:2)

查看ASP.NET中的clientside validation API

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

  

表示的布尔变量   页面当前是否有效。   验证脚本可以满足这一要求   始终保持日期。

例如:

if(Page_IsValid){
   foo();
}

如果

,则自动包含必要的WebUIValidation.js文件
  • 该页面包含一个或多个验证Web控件。
  • “高级”浏览器正在访问该页面。

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

如果要在验证成功时按回按钮,则必须返回验证结果:

OnClientClick="return Validate();"

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

var validPage = Page_ClientValidate();