Ver Mensaje Individual
  #10 (permalink)  
Antiguo 25/01/2007, 04:22
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 23 años
Puntos: 45
Re: Cómo transformar objetos del formulario? (text a checkbox, text a hidden)

Bueno, he estado jugando un poco intentando hacer el text>>password.
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
html>
<
head>
<
title> New Document </title>
<
meta name="Author" content="">
<
meta name="Keywords" content="">
<
meta name="Description" content="">
</
head>

<
body>

<
input type="checkbox" id="check" onclick="cambia()" /> Que sea tipo password <br />
<
input type="text" value="" id="caja" />

<
script language="javascript">

// char_to_hexa de http://www.upcnet.es/~abp1/cosillas/teclas/char_to_hexa.js
function char_to_hexa(codigo) {
    var 
alto = Math.floor(codigo / 16);
    if (
alto > 10) {
        if (
alto == 10) alto = "A";
        if (
alto == 11) alto = "B";
        if (
alto == 12) alto = "C";
        if (
alto == 13) alto = "D";
        if (
alto == 14) alto = "E";
        if (
alto == 15) alto = "F";
    }
    var 
bajo = codigo % 16;
    if (
bajo >= 10) {
        if (
bajo == 10) bajo = "A";
        if (
bajo == 11) bajo = "B";
        if (
bajo == 12) bajo = "C";
        if (
bajo == 13) bajo = "D";
        if (
bajo == 14) bajo = "E";
        if (
bajo == 15) bajo = "F";
    }
    return (
"%" + alto + bajo);
}


function 
cambia() {
    if( 
document.getElementById("check").checked )
        
cambiaApass();
    else
        
cambiaAtext();
}


var 
laCaja=document.getElementById("caja");
var 
valor="";

function 
soloAsteriscos() {
    
laCaja.value= valor.replace(/./gi, "*");
}

function 
cambiaApass() {
    
valor=laCaja.value;
    
soloAsteriscos();
    
laCaja.onkeypress=function(e) {
        if(
window.event)
            var 
keyCode=window.event.keyCode;
        else if(
e) var keyCode=e.which;
        if(
keyCode==8)        // se ha pulsado backspace
            
valor=valor.substring(0,valor.length-1);    //borramos
        
else
            
valor+= unescape( char_to_hexa(keyCode) );
        
//alert("El valor es ahora:"+valor);
        
soloAsteriscos();
        
laCaja.focus();
        return 
false;
    }
}

function 
cambiaAtext() {
    
laCaja.onkeypress=null;
    
laCaja.value=valor;
}


</script>


</body>
</html> 
En realidad no cambia a password, pero actúa como password. Funciona en IE y en FF. No está completo, como veis hay que detectar el backspace para eliminar un caracter y no añadir a la variable valor algo extraño en vez de eliminar el ultimo caracter.

Lo que faltaría: Las teclas de las flechas no se detectan, amen de extrañas combinaciones como Ctrl+V etcétera. Creo que habría que hacer el código mucho más largo para entrar en cada caso...

Creo que para encontrar lo que buscamos aquí tal vez sea mejor utilizar el DOM y sustituir cada vez que se pulse una tecla el textbox por un passbox
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.