2009-12-10 6 views
5
<input type="text" value="useraname" /> 
<input type="password" value="password" /> 

J'utilise jQuery pour faire disparaître les étiquettes en ligne lors du clic/focus. Le mot de passe montre les taureaux comme d'habitude, mais je me demande s'il est possible d'afficher d'une façon ou d'une autre l'étiquette "Mot de passe" en tant que texte (au lieu de ••••) dans le champ mot de passe?Étiquette pour le champ de mot de passe

Édité pour ajouter: Je veux que le mot de passe tapé par l'utilisateur soit caché ofcourse !.

Merci

Répondre

6

Il existe des plugins pour cela. Voir labelify par exemple

+0

À moins que je me trompe les docs de plugin ne mentionnent pas un mot de passe. J'ai juste changé rapidement l'un des types de champs en 'mot de passe' et tous les caractères ont tourné les points. Est-ce que ce plug-in fonctionne avec les champs de mot de passe comme demandé par l'OP? – megaSteve4

+0

Même histoire ici. C'est seulement pour les champs de texte, pas pour les champs de mot de passe. –

0

Si vous faites le input type = « zone de texte », vous serez en mesure de voir le mot de passe.

+0

Bien sûr, mais le mot de passe sera également visible. J'ai juste besoin que l'étiquette soit du texte. – 3zzy

+0

je ne sais pas ce que vous voulez dire par là. – Galen

+4

Dès que la boîte reçoit le focus, remplacez-la par un type = "mot de passe". Vraisemblablement, vous avez déjà du code qui efface la valeur lorsque la boîte est mise au point, il suffit donc de l'ajouter. La route du plugin pourrait être meilleure. – McPherrinM

0

Je pense que vous devez superposer dynamiquement une < input type = "text" > en haut du champ de mot de passe pour ce faire.

1

Vérifiez le code ci-dessous. Ajoutez simplement addPassClear("Password") à n'importe quel élément d'entrée pour lequel vous voulez cette fonctionnalité.

$(function() { 
$.fn.addPassClear = 
function(text) 
{ 
    return $(this).each(
    function() 
    { 
    $(this).focus(function(event){$(this).passFocusize(text); $(this).select(); }); 
    $(this).blur(function(event){$(this).passBlurize(text); }); 
    }); 
} 
$.fn.passFocusize = 
function(text) 
{ 
    return $(this).each(
    function() 
    { 
    if ($(this).val()==text && $(this).attr("type")=="text") 
    { 
     $(this).val(""); 
     this.type="password"; 
    } 
    }); 
}; 
$.fn.passBlurize = 
function(text) 
{ 
    return $(this).each(
    function() 
    { 
    if ($(this).val()=="") 
    { 
     $(this).val(text); 
     this.type="text"; 
    } 
    }); 
}; 
}; 
4

pourquoi tout ce long script? que le jus une tâche simple qui peut être fait avec une demi-ligne de code:

<input type='text' onclick="this.type='password',value=''" class='watever' value='password'..etc 

acclamations

+1

J'adore ça, mais je pense que 'onfocus' est meilleur que' onclick' car il se déclenche aussi lorsque les utilisateurs entrent dans le champ ... – neokio

0

Ma solution est proche de ce que Dan a fourni ci-dessus .

<script language="javascript" type="text/javascript"> 
    function SwapLabel(id, label, alttype) { 
     $(id).focus(function() { 
      if (this.value == label) { 
       this.value = ""; 
       if (this.type == 'text' && label == 'Password') { 
        this.type = alttype; 
       } 
      } 
     }); 
     $(id).blur(function() { 
      if (this.value == "") { 
       this.value = label; 
       if (this.type == alttype && label == 'Password') { 
        this.type = 'text'; 
       } 
      } 
     }); 
    } 
    $(document).ready(function() { 
     SwapLabel('#UserName', 'Username', ''); 
     SwapLabel('#Password', 'Password', 'password'); 
    }); 
</script> 

Une alternative serait ici d'omettre le paramètre « étiquette », et il suffit d'utiliser la valeur « titre », ce qui est essentiellement ce que labelify.js fait. Vous pourriez ajouter dans la partie de labelify qui applique ces gestionnaires d'événements à toutes les entrées de texte de type si vous le souhaitez. Ou télécharger labelify et ajoutez le code ci-dessous si nécessaire:

  if (this.type == 'text' && label == 'Password') { 
       this.type = alttype; 
      } 

      if (this.type == 'text' && label == 'Password') { 
       this.type = alttype; 
      } 

Le seul avantage mon extrait a plus labelify est qu'il comprend la réponse à votre question initiale:

Je me demande s'il est possible en quelque sorte à afficher l'étiquette "Mot de passe" comme texte (au lieu de ••••) dans le champ mot de passe?

Questions connexes