2009-06-08 9 views
0

Je voudrais avoir cette fonction:passer le contrôle de asp comme paramètre javascript

function count(inputObj, ouputObj) 
{ 
    outputObj.value = inputObj.value.length; 
} 

Et je voudrais l'appeler ainsi:

<asp:TextBox ID="txtUSERGUID" runat="server" onkeyup="count(this, document.getElementById('<%=txtUSERGUIDLength.ClientID%>'));" onkeydown="count(this, document.getElementById('<%=txtUSERGUIDLength.ClientID%>'));" /> 

<asp:TextBox ID="txtUSERGUIDLength" runat="server" /> 

<asp:Label ID="lblUSERGUIDLength" runat="server" Text="chars" /> 

Mais je continue à avoir une erreur javascript cela dit: 'outputObj' est indéfini. Puis-je appeler cette fonction comme ceci ou vais-je complètement dans la mauvaise direction?

Répondre

4

Vous ne pouvez pas avoir cela à l'intérieur d'une balise de serveur, il ne sera pas exécuter le code côté serveur:

<%=txtUSERGUIDLength.ClientID%> 

Si vous allez le faire faire quelque chose comme

<script language='javascript'> 

var g_clientID = '<%=txtUSERGUIDLength.ClientID%>' 

<script/> 

puis ne:

onclick(this, document.getElementById(g_clientID)) 
1

Vérifiez votre source de la page, je pense que vous trouverez que le gestionnaire d'événements « onkeyup » a encore le serveur s code ide dedans. Puisque vous définissez une propriété sur un contrôle serveur, le code "<% =%>" n'est pas exécuté. Vous devrez déplacer ceci vers une fonction javascript séparée si vous voulez faire cela.

0

Je ne pense pas que vous puissiez insérer des paramètres de cette manière pour les contrôles côté serveur.

Vous pouvez définir ces paramètres dans votre code côté serveur:

txtUSERGUID.Attributes.Add("onkeyup", yourEventHandlerScript); 
Questions connexes