gpt4 book ai didi

asp.net - 如何关闭 ASP.NET 必填字段验证器 "lost focus"行为

转载 作者:行者123 更新时间:2023-12-04 01:08:46 24 4
gpt4 key购买 nike

我有一些代码,我需要一个控件的两个单独的必需字段验证器,都在单独的验证组中,然后通过两个单独的按钮进行验证。

这种方法在单击按钮时效果很好,但两个验证器都会显示我是否在文本框中输入一个值然后将其删除。

有没有办法关闭这种“失去焦点”的验证?我只需要它在单击按钮时进行验证。

编辑

不幸的是,如果我设置 EnableClientScript=false 那么我没有任何客户端通知。我想要的是显示动态错误消息(有效地在按钮的 OnClientClick 事件中)而不是文本框的“失去焦点”。

有什么方法可以禁用或“取消挂接”lostfocus 客户端事件?

编辑

dDejan 的回答和 womp 的回答相结合 here完美地解决了问题。

我的最终代码如下所示(对于其他有类似情况的人)...

Javascript...

<script type="text/javascript">

$(document).ready(function() {
$('body').fadeIn(500);

//Turn off all validation = its switched on dynamically
$.each(Page_Validators, function(index, validator) {
ValidatorEnable(validator, false);
});
});

function ToggleValidators(GroupName) {

$.each(Page_Validators, function(index, validator) {
if (validator.validationGroup == GroupName) {

ValidatorEnable(validator, true);

} else {
ValidatorEnable(validator, false);
}
});
}

</script>

ASPX 控件示例...
<telerik:RadTextBox Width="196px" ID="txtFirstName" runat="server" MaxLength="50" Skin="Black"></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="valFirstName" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForEmail"></asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForSubmit"></asp:RequiredFieldValidator>

ASPX 按钮代码...
<asp:Button ID="btnGetConfCode" runat="server" Text="Get Confirmation Code" OnClientClick="ToggleValidators('NeededForEmail')" OnClick="btnGetConfCode_Click" Width="100%" ValidationGroup="NeededForEmail"/>

<asp:Button ID="btnRegisterUser" runat="server" Text="Register" OnClientClick="ToggleValidators('NeededForSubmit')" OnClick="btnRegisterUser_Click" Width="100px" ValidationGroup="NeededForSubmit" />

因此,现在在用户单击“获取电子邮件确认代码”按钮或“注册”按钮之前不会进行验证。

如果他们单击“获取电子邮件确认代码”按钮,除了用户输入电子邮件验证代码的文本框之外,所有控件都会验证,我们只看到一个验证器消息。

如果他们单击“注册”按钮,则所有控件都会进行验证,而我们只会看到一条验证消息。

如果按下任一按钮,用户返回,添加然后删除一些文本,然后我们只能看到一个验证器。在此更改之前,您曾经看到两条消息都在说相同的事情。

谢谢你们的帮助

最佳答案

您可以使用 ValidatorEnable 使用客户端代码设置验证器是否“事件”。功能。基本上是这样的

var validator = document.getElementById('<%=Validator1.ClientID%>');
ValidatorEnable(validator , state); //where state is boolean

您还可以使用 ValidatorValidate(validator) 触发验证器对某些事件(例如单击按钮)进行验证。功能。

我不确定哪个更适合您(启用/禁用验证器或自定义触发验证),但我建议这篇文章将指导您朝着正确的方向前进

ASP.NET Validation in Depth

关于asp.net - 如何关闭 ASP.NET 必填字段验证器 "lost focus"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com