web-dev-qa-db-fra.com

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 des parties d'une page Web. Cependant, ces parties désactivées ont des validateurs asp.net qui sont encore en cours d’exécution et je dois les désactiver sans effectuer d’aller-retour au serveur. Merci.

31
Peanut

Utilisez cet extrait:

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

Par Glenn G commentaire ci-dessus, je voudrais utiliser 

myVal.enabled = false; 

désactiver le validateur au lieu de 

ValidatorEnable(myVal, false); 

Voici ce que j'ai expérimenté: Les deux extraits ont bien fonctionné 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 qui cause le problème), mon comportement était inattendu avec "ValidatorEnable". Il y a des onglets (usercontrols) sur ma page et lorsque je quittais l'onglet qui appelait "ValidatorEnable", il désactivait temporairement les validateurs sur l'onglet suivant (même si le code n'était pas appelé pour les désactiver) jusqu'à la publication suivante.

1
Tony L.

Ceci est une vieille question, mais surpris de la réponse suivante non donnée. Je l'ai implémenté en utilisant les commentaires ci-dessus et fonctionne parfaitement 

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

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

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

  1. Assurez-vous que vous pouvez définir un point de rupture et pouvez parcourir le code en un seul passage. Si ce n'est pas le cas, redémarrez le navigateur.

  2. Définissez le point de rupture au début de la fonction où vous avez mis ce code. Parcourez le code. S'il y a une erreur, le code se ferme et vous ne pourrez pas y accéder.

  3. Dans firefox Firebug, vous pouvez taper l'intégralité de l'instruction javascript dans l'onglet Console pour voir ce que votre instruction renvoie. Plus important encore, vous voulez vérifier les valeurs non nulles des contrôles. 

1
Hammad Khan

De plus, plutôt que de simplement 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 à la page, ce qui, je crois, désactive la validation. Quelqu'un s'il vous plaît corrigez-moi si je me trompe.

1
Mike Fielden

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

Comment contrôler ASP.NET Validator Controls validation côté client à partir de JavaScript

0
Roboblob

La meilleure façon de faire comme ça,

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