2012-02-03 1 views
0

J'ai créé une fonction JavaScript qui se déclenche sur l'événement OnKeyPress d'une zone de texte. Fondamentalement, lorsque la fonction est appelée, une étiquette s'affiche indiquant à l'utilisateur que le verrouillage des majuscules est activé. Comme vous pouvez le voir à partir de la méthode ci-dessous, si le verrouillage des majuscules est activé, 3 libellés s'affichent, mais j'aimerais utiliser le paramètre Passé pour savoir quelle zone de texte a déclenché l'événement afin d'afficher uniquement l'un des libellés de verrouillage. Toutes les idéesDécouvrez quel contrôle ASP.NET a déclenché mon événement JavaScript?

Ma fonction JScript est inférieure à l'un des appels textboxs ci-dessous que:

function capLock(e) { 
     kc = e.keyCode ? e.keyCode : e.which; 
     sk = e.shiftKey ? e.shiftKey : ((kc == 16) ? true : false); 
     if (((kc >= 65 && kc <= 90) && !sk) || ((kc >= 97 && kc <= 122) && sk)) 
      document.getElementById('divCurrentPasswordCapsLockStatus').style.visibility = 'visible'; 
      document.getElementById('divNewPasswordCapsLockStatus').style.visibility = 'visible'; 
      document.getElementById('divConfirmPasswordCapsLockStatus').style.visibility = 'visible'; 
     else 
      document.getElementById('divCurrentPasswordCapsLockStatus').style.visibility = 'hidden'; 
      document.getElementById('divNewPasswordCapsLockStatus').style.visibility = 'hidden'; 
      document.getElementById('divConfirmPasswordCapsLockStatus').style.visibility = 'hidden'; 
    } 

<asp:TextBox ID="txtCurrentPassword" runat="server" TextMode="Password" CssClass="customtxt" onkeypress="capLock(event)"></asp:TextBox> 

Je voudrais donc faire quelque chose comme ce qui suit avec la fonction JScript:

if (e.name=="txtCurrentPassword") 
{ 
    document.getElementById('divCurrentPasswordCapsLockStatus').style.visibility ='visible'; 
} 
else 
{ 
    document.getElementById('divNewPasswordCapsLockStatus').style.visibility = 'hidden'; 
    document.getElementById('divConfirmPasswordCapsLockStatus').style.visibility = 'hidden'; 
} 

J'utilise ASP.Net 4.0

Merci

+1

pouvez vous passer this dans votre fonction? par exemple. onkeypress = "capLock (this, event)" et changez votre fonction pour qu'elle soit function capLock (expéditeur, e) { –

+0

Presque, j'ai essayé cela mais comment puis-je obtenir le nom du contrôle à partir du paramètre de l'expéditeur. J'ai essayé ce qui suit: if (sender.id == "txtCurrentPassword") {alert ("Exécuter mon code"); } Mais sender.id renvoie le chemin complet du contrôle txtCurrentPassword. par exemple. tabContainerMain_tabMain_txtCurrentPassword } – user1131661

Répondre

1

Ok, donc vous devez utiliser

ClientIdMode="Static" 

Voir une ventilation de ce que les modes sont http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

Quasiment ce émettra ID que vous les spécifiez dans la page, non pas comme les essais de conteneurs de nommage et les met comme.

Alors pouvez-vous passer 'ceci' dans votre fonction? par exemple.

onkeypress="capLock(this, event)" 

et changer votre fonction d'être

function capLock(sender, e) { 
+0

Merci, cela fonctionne. Cependant, tous mes combos sont maintenant dessinés différemment? La flèche vers le bas qui est utilisée pour afficher les éléments de combo n'est plus là, il semble juste avoir remplacé par une boîte blanche !? – user1131661

+0

: o Je regarderais votre css comme cela ne devrait pas changer cela. –

+0

YESSSSSSSSSSSSS !!! Merci beaucoup. Tout fonctionne bien. Si vous avez envie d'autres questions, j'en ai posté une autre plus tôt, mais personne n'a encore répondu. Recherche: espacement vertical ASP.Net sur un contrôle ValidationSummary. Merci encore. – user1131661

Questions connexes