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

Estoy usando jQuery para hacer que las etiquetas en línea desaparezcan al hacer clic/enfocar. La contraseña muestra los toros como de costumbre, pero me pregunto si es posible de alguna manera mostrar la etiqueta "Contraseña" como texto (en lugar de ••••) dentro del campo de contraseña.Etiqueta para campo de contraseña

Editado para agregar: ¡Quiero que la contraseña mecanografiada por el usuario esté oculta por supuesto !.

Gracias

Respuesta

6

Hay complementos para eso. Consulte labelify por ejemplo

+0

A menos que esté equivocado, los documentos del complemento no mencionan una contraseña. Rápidamente cambié uno de los tipos de campo a 'contraseña' y todos los personajes cambiaron los puntos. ¿Este complemento funciona con campos de contraseña como se solicitó OP? – megaSteve4

+0

La misma historia aquí. Es solo para campos de texto, no para campos de contraseña. –

0

si se hace el input type = "cuadro de texto" usted será capaz de ver la contraseña.

+0

Por supuesto, pero luego la contraseña será visible también. Solo necesito que la etiqueta sea texto. – 3zzy

+0

im no estoy seguro de lo que quieres decir con eso. – Galen

+4

Tan pronto como el cuadro reciba el foco, cámbielo a un tipo = "contraseña". Es de suponer que ya tienes un código que borra el valor cuando el cuadro está enfocado, así que simplemente agrégalo allí. Sin embargo, la ruta del complemento podría ser mejor. – McPherrinM

0

Creo que tendría que superponer dinámicamente un < tipo de entrada = "texto" > en la parte superior del campo de contraseña para hacer esto.

1

Echa un vistazo al código a continuación. Simplemente añada addPassClear("Password") a cualquier elemento de entrada para el que desee esta funcionalidad.

$(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

¿por qué todo ese guion largo? que el jus una tarea sencilla que se puede realizar con una media línea de código:

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

aplausos

+1

Me encanta esto, pero creo que 'onfocus' es mejor que' onclick' porque también se dispara cuando los usuarios entran en el campo ... – neokio

0

Mi solución está cerca de lo que Dan previsto por encima .

<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> 

Una alternativa en este caso sería omitir el parámetro "etiqueta", y sólo tiene que utilizar el valor "título", que es básicamente lo que hace labelify.js. Puede agregar la parte de etiquetar que solo aplica estos controladores de eventos a todas las entradas de tipo texto si lo desea. O descargar labelify y añadir el siguiente código donde sea necesario:

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

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

la única ventaja de mi fragmento tiene sobre labelify es que incluye la respuesta a su pregunta original:

Me pregunto si es posible de alguna manera a muestra la etiqueta "Contraseña" como texto (en lugar de ••••) dentro del campo de contraseña?

Cuestiones relacionadas