J'ai une page où un utilisateur peut sélectionner un fournisseur via une liste déroulante ou entrer un numéro de fournisseur via une zone de texte. L'un ou l'autre doit avoir une valeur. Je peux le faire en javascript facilement, mais comment puis-je le faire en utilisant un validateur personnalisé fourni par ajax tous sur le côté client?Validation de la liste déroulante OU de la zone de texte
Edité
Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
If Page.IsValid Then
//save stuff
End If
End Sub
Sub ServerValidation(ByVal source As Object, ByVal args As ServerValidateEventArgs) Handles ValidPage.ServerValidate
Try
' Test whether the value entered into the text box is even.
Dim num As Integer = Integer.Parse(args.Value)
args.IsValid = ((num Mod 2) = 0)
Catch ex As Exception
args.IsValid = False
End Try
End Sub
Protected Sub ValidPage_ServerValidate(ByVal source As Object, ByVal args As ServerValidateEventArgs)
Try
args.IsValid = (Not String.IsNullOrEmpty(Me.txtVendnum.Text) OrElse Me.DropDownList1.SelectedIndex <> 0)
Catch e As Exception
DirectCast(source, CustomValidator).ErrorMessage = "You must Choose a Vendor"
args.IsValid = False
End Try
End Sub
<script type="text/javascript" language="javascript" >
function ClientValidate(sender, args) {
// Get Both form fields
var ddlvalue = document.getElementById('<%=DropDownList1.ClientID%>');
var txtValue = document.getElementById('<%=txtVendnum.ClientID %>');
// do you client side check to make sure they have something
if (txtValue.value == '' && ddlvalue.value == '0') {
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource1" ValidationGroup="Save" DataTextField="vmvnnm" DataValueField="vmvend" >
</asp:DropDownList>
<asp:TextBox ID="txtVendnum" ValidationGroup="Save" runat="server"></asp:TextBox><br />
<asp:CustomValidator ID="ValidPage" ValidationGroup="Save" runat="server" ClientValidationFunction="ClientValidate" ErrorMessage="CustomValidator"
SetFocusOnError="True" ControlToValidate="txtVendnum" EnableClientScript="true" Display="Static" OnServerValidate = "ServerValidation" ></asp:CustomValidator>
//other stuff. A different validator group, html editor, etc
<td>
<asp:ImageButton ID="ImageButton1" CausesValidation = "true" ValidationGroup="Save" OnClick="ImageButton1_Click" runat="server" ImageUrl="../images/bttnSave.gif" />
</td>
Vous voudrez peut-être penser de faire 1 contrôle, un Ajax Auto Complete sur une zone de texte. Il ya des tonnes de grandes bibliothèques là-bas pour aider: (YUI, jQuery) (Il appartient ici désolé ~) – BigBlondeViking