2010-02-09 5 views
2

Supposons que j'ai une page maître dans laquelle j'ai écrit du javascript pour accéder à la valeur d'une zone de texte asp.net particulière, qui réside dans l'un de ses contenus pages, mais pas dans toutes les pages. Ce morceau de code javascript ne peut pas être déplacé vers cette page de contenu en raison de certaines restrictions.Comment vérifier si une certaine zone de texte asp.net existe dans une page

Maintenant, j'ai besoin d'un moyen de déterminer si oui ou non cette zone de texte existe dans la page, ce qui impliquera que la page de contenu contenant cette zone de texte a été chargée.

Comment puis-je faire cela en javascript?

+0

Après avoir vu les réponses, je pense que je n'ai pas dit le problème de problème correctement Cette fonction javascript qui vérifie que si un contrôle existe, est écrit dans la page principale, et le contrôle pour lequel je recherche existe à l'intérieur d'une de ses pages de contenu.Alors que je parcours d'autres pages, le contrôle n'est évidemment pas là. o accéder à la propriété id client de ce contrôle, asp est en train de lancer une erreur .... –

Répondre

4
var productElement = document.getElementById("<%= YourTextBoxID.ClientID%>"); 
if (productElement != null) 
{ 
// Code here when the Element Exists. 
} 

Espérons que ça aide!

EDIT (après clarification):

Dans votre page principale:

<% if (FindControl("YourTextBoxID") != null) { 
    //do smthng, you can add some jscript that should be executed, or something else you need 
} %> 
+0

Non, ça ne marche pas. Lorsque j'exécute la page maître du site, un message d'erreur s'affiche, qui indique - Le nom 'YourTextBox' n'existe pas dans le contexte actuel –

+0

Ahh ... Je vois ... Eh bien, vous devriez utiliser avec les tags du serveur le instruction suivante: <% if (FindControl ("YourTextBoxID")! = null) {// do smthng}%> Je pense qu'il n'y a pas moyen de le faire avec javascript uniquement, car vous ne savez pas quel ID c'est censé avoir. – anthares

1
var elem = document.getElementById('myElement'); 
if(elem) 
{ 
    // Do stuff when elem exists 
} 

Tout ce qui est undefined ou null (dans ce cas, l'élément qui n'existe pas) va biaiser à faux. Donc, s'il existe, il devient vrai et l'instruction if va s'exécuter.

+0

Je ne peux pas accéder à un contrôle asp.net en utilisant cette approche.Parce que lorsque le contrôle est traité dans le serveur, il attribue un nouvel ID unique à sa zone de texte html équivalente, accessible uniquement à l'aide de ('<% = myElement.ClientID%>') ...... –

+0

Pouvez-vous créer un élément 'quelque part dans votre page de contenu que vous êtes POSITIF de vous pouvez connaître l'ID, puis définissez sa valeur à' <% = myElement.ClientID%> '? Ou, si vous utilisez jQuery, vous pouvez simplement utiliser la structure de page générique pour affiner ce que vous voulez afin que vous puissiez obtenir cette valeur d'ID. Je ne sais rien de l'ASP, donc je ne me suis pas rendu compte qu'il y avait des fonctionnalités gênantes comme ça. Désolé ma réponse n'a pas été si utile ... =/ –

1

côté client, contrôle d'accès, vous devez utiliser ClientID propriété de contrôle dans votre page de contenu

<script type="text/javascript"> 
var control = document.getElementById("<%=YourControl.ClientID%>") 
</script> 

Sur la page principale, votre code devrait être,

<script type="text/javascript"> 
function IsTextBoxExist(){ 
    if(control != null){ 
    ... 
    } 

} 
</script> 

Assurez-vous que IsTextBoxExist appelle lorsque le chargement de la page est terminé. comme

<body onload="isTextBoxExist()" 
+0

Non, votre solution ne fonctionne pas non plus, désolé .... –

1

Si vous pouvez utiliser jQuery, vous pouvez utiliser un sélecteur "Attribute Contient Word". Supposons que l'ID de votre zone de texte côté serveur est 'text_box'. L'attribut « name » côté client contiendra l'ID côté serveur (quelque chose comme « ctl00 $ ctl00 $ text_box) Donc, pour le sélectionner, utilisez:.

var textBox = $("input[name~=text_box]"); 
if (textBox.length != 0) { 
    // text box found - do something here 
} 

Sans jQuery, vous pouvez itérer la forme .elements collection et tester chaque nom.

for (var i; i++; i < forms[0].elements.length) { 
    if (forms[0].elements[i].name.indexOf("text_box") != -1) { 
    // text box found - do something here 
    break; 
    } 
} 
+0

Mais il doit être absolument sûr que l'ID qu'il cherche n'est pas la sous-chaîne de tout autre contrôle dans sa page ... – anthares

+0

bon point - il doit être unique – Ray

Questions connexes