Pouvez-vous effectuer une validation javascript côté client personnalisée pour les validateurs de formulaire Web ASP.NET standard? Par exemple, utilisez un ASP: RequiredFieldValidator laissez le code côté serveur seul mais implémentez votre propre notification client en utilisant jQuery pour mettre en évidence la couleur du champ ou de l'arrière-plan par exemple.Pouvez-vous avoir une validation javascript côté client personnalisée pour les validateurs de formulaire Web ASP.NET standard?
Répondre
La norme CustomValidator a un ClientValidationFunction propriété pour que:
<asp:CustomValidator ControlToValidate="Text1"
ClientValidationFunction="onValidate" />
<script type='text/javascript'>
function onValidate(validatorSpan, eventArgs)
{ eventArgs.IsValid = (eventArgs.Value.length > 0);
if (!eventArgs.IsValid) highlight(validatorSpan);
}
</script>
Qu'est-ce que vous pouvez faire est crochet dans le validateur et assigner une nouvelle méthode Evaluate, comme ceci:
<script type="text/javascript">
rfv.evaluationfunction = validator;
function validator(sender, e) {
alert('rawr');
}
</script>
RFV est l'ID de mon champ validateur requis. Vous devez le faire au bas de votre page afin qu'il l'assigne après que le javascript du validateur soit enregistré.
Il est beaucoup plus facile d'utiliser simplement le CustomFieldValidator et d'assigner sa propriété de validation côté client.
<asp:CustomValidator ControlToValidate="txtBox" ClientValidationFunction="onValidate" />
<script type='text/javascript'>
function onValidate(sender, e)
{
alert('do validation');
}
</script>
Voici comment changer le comportement de la validation, pas comment changer la façon dont il est affiché. – Geoff
Oui, je l'ai fait. J'ai utilisé Firebug pour trouver les fonctions JS de Dot.Net, puis j'ai détourné les fonctions de validation.
Ce qui suit sera appliqué à tous les validateurs et est purement côté client. Je l'utilise pour changer la façon dont la validation ASP.Net est affichée, pas la façon dont la validation est réellement effectuée. Il doit être enveloppé dans un $ (document) .ready() pour s'assurer qu'il écrase la validation ASP.net d'origine.
/**
* Re-assigns a couple of the ASP.NET validation JS functions to
* provide a more flexible approach
*/
function UpgradeASPNETValidation(){
// Hi-jack the ASP.NET error display only if required
if (typeof(Page_ClientValidate) != "undefined") {
ValidatorUpdateDisplay = NicerValidatorUpdateDisplay;
AspPage_ClientValidate = Page_ClientValidate;
Page_ClientValidate = NicerPage_ClientValidate;
}
}
/**
* Extends the classic ASP.NET validation to add a class to the parent span when invalid
*/
function NicerValidatorUpdateDisplay(val){
if (val.isvalid){
// do custom removing
$(val).fadeOut('slow');
} else {
// do custom show
$(val).fadeIn('slow');
}
}
/**
* Extends classic ASP.NET validation to include parent element styling
*/
function NicerPage_ClientValidate(validationGroup){
var valid = AspPage_ClientValidate(validationGroup);
if (!valid){
// do custom styling etc
// I added a background colour to the parent object
$(this).parent().addClass('invalidField');
}
}
Vous devriez publier vos sources lorsque vous collez du code, et cela montre juste comment pirater * tout * validatio, pas seulement un certain validateur. Vous devez également mentionner que cela utilise jQuery, pas asp.net ajax standard. Voici l'article original: http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=362 – sontek
Ceci est le code que j'ai utilisé dans un projet au travail, que j'ai trouvé moi-même sans cet article. L'OP dit qu'il veut utiliser jQuery. Va flamber quelqu'un d'autre. – Geoff
Geoff, je voulais juste dire que j'ai été époustouflé par cet extrait. J'ai quitté ma connexion bureau à distance pour pouvoir utiliser un navigateur sur lequel je suis connecté juste pour dire à quel point c'est cool. Je l'ai cherché pendant un certain temps. Merci! :) –
Et serait ennuyeux de s'appliquer à tous les validateurs. – Geoff
Oui, je dois le faire sans le changer en validateur personnalisé –