2010-09-28 5 views

Répondre

0

Il n'est pas possible de masquer les contrôles du serveur en JavaScript. JavaScript est exécuté côté client, tandis que les contrôles serveur sont traités côté serveur. Les contrôles JavaScript et serveur ne communiquent jamais entre eux, ce n'est pas possible.

Si vous souhaitez masquer le contrôle du serveur, vous devez éditer le fichier HTML (je ne sais pas si cela est votre .aspx, .php ou autre chose, mais j'espère que vous comprenez ce que je veux dire.)

+1

Il est possible. Un contrôle serveur est simplement rendu à la page en tant que contrôle HTML standard, de sorte que vous pouvez exécuter du code JavaScript comme vous le feriez pour n'importe quel autre élément. – GenericTypeTea

+0

Non, à mon avis, c'est strictement impossible. Bien sûr, il est absolument possible de masquer le HTML ACTUAL qui est rendu par le contrôle serveur, en utilisant les méthodes que vous décrivez (en utilisant display: none et visibility: hidden). Mais quand vous visualisez la source dans votre navigateur, le balisage sera toujours là, j'ai interprété la question de telle manière que @Aman préférerait ne pas utiliser le masquage CSS (Quote: Je ne veux pas user "none"), mais plutôt arrêter le contrôle du rendu côté serveur, en utilisant JavaScript. C'est impossible - d'accord? –

+0

Je vois d'où vous venez, mais j'ai compris la question comme "comment cacher quelque chose en utilisant JavaScript au lieu d'utiliser' display: none' ". Je suppose que 'display: none' posait problème, donc l'OP avait besoin d'une alternative. Mais, il y a évidemment une barrière linguistique qui nous empêche de savoir exactement ce que le PO exige. – GenericTypeTea

0

Vous pouvez masquer le contrôle serveur après qu'il a été rendu à la page. Une alternative à display:none est visibility:hidden;

Vous pouvez utiliser visibility à la place:

var obj = GetServerControlById(someId); 
obj.style.visibility = "hidden"; // Hides 
obj.style.visibility = "visible"; // Shows 

Si vous utilisez ASP.Net, vous pouvez obtenir le contrôle via son ClientId propriété:

var clientId = "<%= yourServerControl.ClientID %>"; 
var obj = document.getElementById(clientId); 
0

Vous pouvez cacher que la sortie HTML généré par le contrôle côté serveur:

Markup:

<uc:MyControl runat="server" ID="myControl" ClientIDMode="static"> 
    ... 
</uc:MyControl> 

JavaScript (jQuery):

$('.myControl').hide(); // .show(); 
+1

L'OP n'a pas dit qu'il utilisait jQuery. – GenericTypeTea

+0

@GenericTypeTea: C'est un bon point de départ, n'est-ce pas? – abatishchev

+2

L'OP a également explicitement déclaré qu'il ne voulait pas utiliser 'none', ce qui, je suppose, signifiait qu'il ne voulait pas utiliser' display: none', et 'hide()' définit simplement 'display: none' à l'élément :) – GenericTypeTea

Questions connexes