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: 20 años, 7 meses
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 == 10alto "A";
        if (
alto == 11alto "B";
        if (
alto == 12alto "C";
        if (
alto == 13alto "D";
        if (
alto == 14alto "E";
        if (
alto == 15alto "F";
    }
    var 
bajo codigo 16;
    if (
bajo >= 10) {
        if (
bajo == 10bajo "A";
        if (
bajo == 11bajo "B";
        if (
bajo == 12bajo "C";
        if (
bajo == 13bajo "D";
        if (
bajo == 14bajo "E";
        if (
bajo == 15bajo "F";
    }
    return (
"%" alto bajo);
}


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


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

function 
soloAsteriscos() {
    
laCaja.valuevalor.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+= unescapechar_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.