我有一些代码,其中一个控件需要两个单独的必填字段验证器,两个验证器都位于单独的验证组中,然后由两个单独的按钮进行验证。
当单击按钮时,这种方法效果很好,但如果我在文本框中输入一个值然后将其删除,两个验证器都会显示。
有没有办法关闭这种“失去焦点”验证?我只需要它来验证单击按钮的时间。
EDIT
不幸的是,如果我设置 Enable ClientScript=false 那么我就没有any客户通知。我想要的是显示动态错误消息(有效地在按钮的 OnClientClick 事件中),而不是文本框的“失去焦点”。
有什么方法可以禁用或“取消挂钩”丢失焦点客户端事件吗?
EDIT
dejan 的答案和 whomp 的答案的组合here https://stackoverflow.com/questions/2158052/enable-disable-asp-net-validator-controls-within-a-specific-validationgroup-wit完美解决了问题。
我的最终代码如下所示(对于有类似情况的其他人)...
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" />
因此,现在只有用户单击“获取电子邮件确认码”按钮或“注册”按钮后才会进行验证。
如果他们单击“获取电子邮件确认码”按钮,则除了用户要在其中输入电子邮件验证码的文本框之外,所有控件都会进行验证,并且我们只会看到一条验证器消息。
如果他们单击“注册”按钮,则所有控件都会验证,我们只会看到一条验证消息。
如果按下任一按钮,用户会返回,添加然后删除一些文本,然后我们只会看到一个验证器。在此更改之前,您经常会看到两条消息都说同样的话。
谢谢你们的帮助