Quel est le meilleur moyen de déterminer si un formulaire sur une page ASPX est valide en JavaScript?
J'essaie de vérifier la validation d'un contrôle utilisateur qui a été ouvert à l'aide de JavaScript window.showModalDialog()
et en vérifiant que la propriété 'Page.IsValid' côté serveur ne fonctionne pas. J'utilise les contrôles de validation ASP.NET pour la validation de page.
Si j'ai une page qui utilise un tas de contrôles de validation ASP.NET, j'utiliserai un code similaire au suivant pour valider la page. Effectuez l'appel sur une entrée soumise. Espérons que cet exemple de code vous aidera à démarrer!
<input type="submit" value="Submit" onclick"ValidatePage();" />
<script type="text/javascript">
function ValidatePage() {
if (typeof (Page_ClientValidate) == 'function') {
Page_ClientValidate();
}
if (Page_IsValid) {
// do something
alert('Page is valid!');
}
else {
// do something else
alert('Page is not valid!');
}
}
</script>
Vous vérifiez pour Page.IsValid
Où vous devriez rechercher Page_IsValid
(C'est une variable exposée par les validateurs .NET) :)
Les contrôles de validation ASP.NET exposent une API côté client que vous pouvez utiliser avec javascript: http://msdn.Microsoft.com/en-us/library/aa479045.aspx
Vous devriez pouvoir vérifier l'objet Page_IsValid pour voir si l'un des contrôles de validation n'est pas valide.
$("input[id$=Button2]").click(function () {
var validated = Page_ClientValidate('repo');
if (validated) {
// JavaScript code.
}
});
Vous pouvez utiliser jQuery et le plugin Validation pour effectuer la validation côté client. Cela fonctionnera avec les balises HTML et les contrôles serveur asp.net. Phil Haack a un bon exemple de projet qui vous montrera les bases.
Cette SO question présente également un examen approfondi de cette approche.
Définissez la propriété ValidationGroup
pour chaque contrôle de validation asp.net
De votre page. Vous devez fournir le même nom à ValidationGroup
dans une page.
Par exemple:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required" ValidationGroup="Validate"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" ValidationGroup="Validate"></asp:RangeValidator>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ValidationGroup="Validate"></asp:CustomValidator>
Après cela, dans votre appel javascript comme Page_ClientValidate("ValidationGroup")
Par exemple:
function ValidatePage(){
if(Page_ClientValidate("Validate")){ //validate using above validation controls group
//validation return true section
}
else{
//validation return false section
}
}