2009-07-22 8 views
0

J'ai un morceau de JavaScript qui efface les données dans une zone de texte. Le code fonctionne correctement sur une page autonome, mais sur la page maître, cela ne fonctionne pas.javascript sur MasterPage

Sur la page par défaut mon JavaScript est:

<script type="text/javascript"> 

    function doClear(searchBox) { 
     if (searchBox.value == searchBox.defaultValue) { 
      searchBox.value = "" 
     } 
    } 

</script> 

Et je ce que je fais pour attacher la propriété OnClick:

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox1.Attributes.Add("onclick", "doClear(searchBox);"); 
} 

L'erreur est 'SearchBox' est pas défini!

Toute aide est grandement appréciée.

Matt

+0

N'allez-vous pas accepter une réponse? –

Répondre

3

Vous devez faire quelque chose comme,

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox1.Attributes.Add("onclick", "doClear('" + TextBox1.ClientId + "');"); 
} 

Lorsque vous utilisez des pages Master, ASP.NET peut changer l'ID client de vos éléments HTML pour vous assurer qu'ils sont uniques. Voir http://odetocode.com/Articles/450.aspx, regardez la section nommée 'Nom Mangling'.

0

Les pages ASP.NET modifient les ID de vos éléments. Au lieu d'appeler doClear (searchBox), je changerais la fonction pour qu'il prenne un élément HTML et appelle doClear (this);

0

Pourquoi ne regardez-vous pas la source de votre page? C'est tout ce que le javascript peut avoir accès après tout. Voyez-vous 'searchBox' dans leur tout? Vous devez rechercher Textbox1.ClientId et cela référencera alors le contrôle que vous recherchez.

Questions connexes