我有一个带有多个文本字段的.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()
答案 0 :(得分:2)
查看ASP.NET中的clientside validation API。
您可以检查客户端上的Page_IsValid
是否检测所有验证器是否有效。
表示的布尔变量 页面当前是否有效。 验证脚本可以满足这一要求 始终保持日期。
例如:
if(Page_IsValid){
foo();
}
如果
,则自动包含必要的WebUIValidation.js
文件
根据您更新的答案:您的页面不会回发,因为您在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();