Ich habe zwei Textfelder auf der Registrierungsseite und ich versuche, entweder - oder Art der Validierung einzurichten. Die Validierung sollte beginnen, wenn beide Felder leer sind, und Sie sagen, dass Sie eines der Felder A oder B eingeben müssen, um sich registrieren zu können.Entweder oder Typ Validierung für 2 Textfelder - ASP.NET Webforms
Ich habe benutzerdefinierten Validator wie unten in meinem Code verwendet, aber es scheint nicht zu funktionieren. Ich suche nach einer klugen Weise, diese 2 Textkästen zu validieren. Serverseitiger Validierungsteil: Wenn ich es getestet habe, trifft der Unterbrechungspunkt niemals die Funktion. Kann jemand einen sauberen Weg vorschlagen, dies zu tun?
Bitte beachten Sie, dass ich für die anderen Steuerelemente auf der Seite Feldvalidatoren benötigt habe, kann ich hier keine haben, weil ich in der Lage sein sollte, für diese 2 Textfelder eine oder eine Bedingung festzulegen.
<div class="form-group">
<asp:Label Text="" ID="lblSCGrantNumber" runat="server" AssociatedControlID="txtStateCommGrantNumber">
State Commission Number
</asp:Label>
<asp:TextBox ID="txtStateCommGrantNumber" runat="server" TextMode="SingleLine" placeholder="State Commission Grant Number" AutoCompleteType="None" class="form-control"></asp:TextBox>
<%-- <asp:RequiredFieldValidator Display="Dynamic" ID="rfStateCommGrantNumber" Text="Required" SetFocusOnError="true" CssClass="text-danger" ControlToValidate="txtStateCommGrantNumber" runat="server"></asp:RequiredFieldValidator>--%>
<asp:CustomValidator ID="stateCommissionGrants" runat="server" OnServerValidate="ServerValidation" OnClientValidate="Validate_textboxes" ControlToValidate="txtStateCommGrantNumber" ErrorMessage="One of the two fields is required" ValidateEmptyText="true"></asp:CustomValidator>
</div>
<div class="form-group">
<asp:Label Text="" ID="lblGrantNumber" runat="server" AssociatedControlID="txtStateCommGrantNumber">
Grant Number
</asp:Label>
<asp:TextBox ID="txtGrantNumber" runat="server" TextMode="SingleLine" placeholder="Grant Number" AutoCompleteType="None" class="form-control"></asp:TextBox>
<%--<asp:RequiredFieldValidator Display="Dynamic" ID="rfStateCommGrantNumber" Text="Required" SetFocusOnError="true" CssClass="text-danger" ControlToValidate="txtStateCommGrantNumber" runat="server"></asp:RequiredFieldValidator>--%>
<asp:CustomValidator ID="grants" runat="server" OnServerValidate="ServerValidation" OnClientValidate="Validate_textboxes" ControlToValidate="txtGrantNumber" ErrorMessage="One of the two is required" ValidateEmptyText="true"></asp:CustomValidator>
</div>
Client-Seite Code:
<script type="text/javascript">
(function Validate_textboxes(sender, args) {
var v = document.getElementById('<%=txtStateCommGrantNumber.ClientID%>').value;
var v = document.getElementById('<%=txtGrantNumber.ClientID%>').value;
if (v == '') {
args.IsValid = false;
}
else {
}
});
server Code:
protected void ServerValidation(object source, ServerValidateEventArgs args)
{
args.IsValid = txtStateCommGrantNumber.Text.Trim().Length > 0 || txtGrantNumber.Text.Trim().Length > 0;
if (!args.IsValid)
{
CustomValidator customvalidator = new CustomValidator();
customvalidator.IsValid = false;
customvalidator.ErrorMessage = "TextBox1 and TexBox2 can't both be empty";
Page.Form.Controls.Add(customvalidator);
}
}
@M Idrees: Ich versuchte Ihren Ansatz, aber Client-Seite hat nicht funktioniert. in diesem Fall keine Server-Seite. –
Kann jemand einen anderen Ansatz vorschlagen? –
Versuchen Sie zu validieren, wenn Textfelder leer sind. Ich denke, es würde Validatoren erst auslösen, wenn es einen Wert hat. Um den leeren Wert zu validieren, können Sie RequiredFieldValidator verwenden. –