2010-03-26 6 views
0

Ok, j'ai une lightbox avec une petite forme (2 champs) dedans, dans un UpdatePanel, et je veux fermer cette lightbox (doit être fait via javascript) lorsque le bouton "Enregistrer" est enfoncé.Exécuter la fonction javascript après la validation côté serveur

Cependant, il est nécessaire d'avoir un CustomValidator côté serveur sur la page, et je ne souhaite fermer la lightbox que si cela est valide.

Est-ce que quelqu'un connaît un moyen de déclencher le code javascript (ou jQuery) à partir d'un validateur côté serveur?

Répondre

2

Vous pouvez ajouter un petit extrait de code en utilisant le ScriptManager pour exécuter après que la réponse revienne au UpdatePanel.

if (Page.IsValid){ 

    ScriptManager.RegisterStartupScript(
      customValidator1, 
      typeof(MyPageClass), 
      "closeBox", 
      "myLightBoxVariableOnThePage.close()", 
      true); 
} 
+0

Hmm, idée intéressante. –

0

Lorsque ce validateur côté serveur fonctionne, il envoie une page toute nouvelle au navigateur. Tout ce qui a été montré dans le navigateur avant était détruit, y compris tout état conservé dans votre javascript. Si une nouvelle page ressemble fortement à l'ancienne page, vous devriez considérer cela comme une heureuse coïncidence.

Par conséquent, la chose à faire ici est plutôt que d'exécuter une fonction javascript, demandez à votre CustomValidator d'apporter les modifications correctes à la page en cas de succès afin qu'elle soit correctement rendue au navigateur en premier lieu.

+0

Malheureusement, la lightbox ne fonctionnera tout simplement pas comme ça, c'est une lightbox jQuery (construite au-dessus de FaceBox) qui ne peut pas rester ouverte après une publication sans la retirer du contexte updatepanel. C'est complexe, d'où mon besoin d'exécuter du code javascript quand il est valide, plutôt que de rendre la lightbox invisible ou quelque chose comme ça. –

Questions connexes