June 23rd, 2009 por Jorge Yau

Jacob Nielsen discute en uno de sus rants, si debemos esconder o no las contraseñas en los formularios de registro, etc. Yo en lo personal prefiero tener los campos escondidos, pero entiendo el porque a algunas personas les puede ser dificil utilizarlos así.

Por mi parte, lo que he estado haciendo desde hace un rato ya, es agregar un botón de esconder y mostrar el password, a continuiación el código Javascript para lograr esto. Y si te preguntas porque no utilizo mejor jQuery, la razón es que hay problemas de compatibilidad en diferentes browsers, jQuery no es capaz de cambiar el “type” del campo, de “password” a “text” y viceversa.

Field:


<form name="formname">
<label>Password <a href="javascript:void(0);" onclick='this.innerHTML=(show_hide_password(document.formname["password"])=="text"?"Hide":"Show");'>Show</a></label>
<input type="password" name="password" id="password" />
</form>

Javascript:


function show_hide_password(elem) {
  var eData={v:elem.value, t:elem.type, s:elem.size, n:elem.name, c:elem.className, i:elem.id},
  newElem, newType=(eData.t=='password'?'text':'password');
  try {
    newElem=document.createElement("<input type='"+newType+"' name='"+eData.n+"' value='"+eData.v+"' size='"+eData.s+"' class='"+eData.c+"' id='"+eData.i+"'>");
  }
  catch(e) {
    newElem=document.createElement('input');
    newElem.name=eData.n;
    newElem.type=newType;
    newElem.size=eData.s;
    newElem.value=eData.v;
    newElem.className=eData.c;
    newElem.id=eData.i;
  }
  elem.parentNode.replaceChild(newElem, elem);
  return newElem.type;
}

Parte del código es mío y honestamente no recuerdo donde conseguí parte de la función así que no puedo darle el credito apropiado.

  • Share/Bookmark

Deja un comentario