Désactiver les validateurs ASP.NET avec JavaScript

Est-ce que quelqu'un sait comment désactiver un validateur ASP.NET en utilisant JavaScript? J'utilise javascript style.display = 'none' pour désactiver les parties d'une page Web. Cependant, ces parties désactivées ont des validateurs asp.net qui tirent encore et je dois désactiver puis sans faire un aller-retour au serveur. Merci.

Utilisez cet extrait:

function doSomething() { var myVal = document.getElementById('myValidatorClientID'); ValidatorEnable(myVal, false); } 

C'est une question ancienne, mais a surpris la réponse suivante, elle n'a pas été donnée. Je l'ai mis en œuvre en utilisant les commentaires ci-dessus et fonctionne parfaitement

 # enable validation document.getElementById('<%=mytextbox.ClientID%>').enabled = true #disable validation document.getElementById('<%=mytextbox.ClientID%>').enabled = disable 

Cette implémentation peut être délicate, car rappelez-vous s'il y a une erreur dans javascript, le code va sortir mais vous n'obtiendrez aucune erreur. Quelques points utiles

  1. Assurez-vous que vous pouvez définir un point de coupure et peut faire un seul pas dans le code. Sinon, redémarrez le navigateur.

  2. Réglez le point de rupture au début de la fonction où vous placez ce code. Passez à travers le code, s'il y a une erreur, le code va sortir et vous ne pourrez pas entrer dans le code.

  3. Dans Firefox Firebug, vous pouvez saisir l'intégralité de l'instruction javascript dans l'onglet de la console pour voir ce que votre déclaration retourne. Plus important encore, vous souhaitez vérifier les valeurs nulles des contrôles.

De plus, plutôt que de cacher des éléments, vous pouvez définir la propriété Visible sur false …

whateverItem.Visible = false;

Cela rend cet élément simplement pas rendu sur la page, ce qui, je crois, désactive la validation. Quelqu'un corrigez-moi si je me trompe.

Voici un article détaillé sur la façon de contrôler les Validateurs ASP.NET de JavaScript:

Comment contrôler les contrôles Validator ASP.NET Validation du côté client à partir de JavaScript

La meilleure façon de faire comme ça,

 function doSomething() { var objvalidator = document.getElementById('myValidatorClientID'); objvalidator.enabled = false; objvalidator.isvalid = true; ValidatorUpdateDisplay(objvalidator); } 

Par le commentaire de Glenn G ci-dessus, j'utiliserais

 myVal.enabled = false; 

Désactiver le validateur au lieu de

 ValidatorEnable(myVal, false); 

Voici ce que j'ai vécu: les deux extraits fonctionnaient bien sur mon serveur 2003 avec .net framework 2.0. Cependant, sur le serveur 2008 R2 avec .net framework 4.0 (je ne suis pas sûr de ce problème), j'avais un comportement involontaire avec "ValidatorEnable". Il existe des onglets (usercontrols) sur ma page et quand je quitterais l'onglet qui appelait "ValidatorEnable", il désactivait temporairement les validateurs sur l'onglet suivant (même si le code n'était pas appelé à les désactiver) jusqu'au prochain postback.