您可以使用CustomValidator进行此操作,但您需要了解一些内容才能使其正常工作.问题是如果ControlToValidate
在验证器上设置属性,那么只有在该控件具有值时才会触发该属性.在您的情况下,您希望在没有值时专门验证它.
要解决此问题,请不要ControlToValidate
在验证程序上设置该属性.然后,在您的客户端和服务器验证处理程序中,您将需要直接访问这两个文本框.
在您的客户端验证功能中,您可以执行以下操作:
function OnCustomClientValidate(source, e) {
e.IsValid = true;
var otherTextBoxValue = $('#<%=OtherTxtBox.ClientID%>').val().trim();
if (otherTextBoxValue == '') {
return;
}
var controlToValidateValue = $('#<%=TextBoxToValidate.ClientID%>').val().trim();
if (controlToValidateValue == '') {
e.IsValid = false;
}
}
Run Code Online (Sandbox Code Playgroud)
您的服务器验证方法可能如下所示:
protected void OnCustomServerValidate(object source, ServerValidateEventArgs e)
{
e.IsValid = true;
// Don't validate anything if `OtherTextBox` is empty
if (OtherTxtBox.Text.Trim() == String.Empty)
{
return;
}
// If we got this far then we need to set IsValid to false if the ControlToValidate has no value
if (TextBoxToValidate.Text.Trim() == String.Empty)
{
e.IsValid = false;
}
}
Run Code Online (Sandbox Code Playgroud)
你的aspx可能是这样的:
<asp:TextBox ID="OtherTextBox" runat="server"></asp:TextBox>
<asp:CustomValidator ID="MyCustomValidator" runat="server" ClientValidationFunction="OnCustomClientValidate" OnServerValidate="OnCustomServerValidate" Display="Dynamic" ErrorMessage="Please enter a value"></asp:CustomValidator>
<asp:TextBox ID="TextBoxToValidate" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
请注意,使用此方法时,它不会验证要验证的(预期)控件何时失去焦点,因为我们尚未指定该控件.因此,当您提交表单时,客户端验证将会触发,但如果验证失败,则会取消回发.
归档时间: |
|
查看次数: |
2622 次 |
最近记录: |