Foros del Web » Programando para Internet » Javascript »

[Resuelto] Fallo en Script "crear select", ¿donde?

Estas en el tema de [Resuelto] Fallo en Script "crear select", ¿donde? en el foro de Javascript en Foros del Web. Hola compañeros, con mis basicos conocimientos de Javascript y gracias a la gran ayuda que he encontrado en este Foro (como siempre ), he creado ...
  #1 (permalink)  
Antiguo 09/04/2003, 19:14
Avatar de Seerkan  
Fecha de Ingreso: febrero-2001
Mensajes: 61
Antigüedad: 23 años, 9 meses
Puntos: 0
[Resuelto] Fallo en Script "crear select", ¿donde?

Hola compañeros,

con mis basicos conocimientos de Javascript y gracias a la gran ayuda que he encontrado en este Foro (como siempre ), he creado un script para que el usuario que se va a registrar eliga su nick de una lista creada en función de sus nombres y apellidos.

Bueno, seguro que no me he explicado demasiado bien . Mejor os pongo el codigo y luego sigo comentando.

Código PHP:
<html>
<
head>
    
<
SCRIPT LANGUAGE="JavaScript">
<!-- 
Begin

function createUsername()
{
arrayName = new Array(4);
arrayName[1] = this.form.user_name.value;
arrayName[2] = this.form.user_name2.value;
arrayName[3] = this.form.user_lastname.value;
arrayName[4] = this.form.user_lastname2.value;
1;
this.form.username.options[i]=new Option(arrayName[1] + arrayName[3], arrayName[1] + arrayName[3]);
i++;
this.form.username.options[i]=new Option(arrayName[1] + "_" arrayName[3], arrayName[1] + "_" arrayName[3]);
i++;
if (
arrayName[2] != "")
    { 
        
this.form.username.options[i]=new Option(arrayName[1] + arrayName[2] + arrayName[3], arrayName[1] + arrayName[2] + arrayName[3]);
        
i++;
        
this.form.username.options[i]=new Option(arrayName[1] + "_" arrayName[2] + "_" arrayName[3], arrayName[1] + "_" arrayName[2] + "_" arrayName[3]);
        
i++;
        
this.form.username.options[i]=new Option(arrayName[1] + arrayName[2] + "_" arrayName[3], arrayName[1] + arrayName[2] + "_" arrayName[3]);
        
i++;
    }
this.form.username.options[i]=new Option(arrayName[3] + arrayName[4], arrayName[3] + arrayName[4]);
i++;
this.form.username.options[i]=new Option(arrayName[3] + "_" arrayName[4], arrayName[3] + "_" arrayName[4]);


this.form.username.disabled=false;
}

//  End -->
 

 
-->
</script>
</head>
<body>
<br>&nbsp;<br>&nbsp;<br>&nbsp;
<div align="center">

<form name="form">
Nombre 1º: <input type="text" name="user_name" size="30" value="Antonio" ><br>&nbsp;<br>
Nombre 2º: <input type="text" name="user_name2" size="30" ><br>&nbsp;<br>
Apellido 1º: <input type="text" name="user_lastname" size="30" value="Garcia" ><br>&nbsp;<br>
Apellido 2º: <input type="text" name="user_lastname2" size="30" value="Ramirez" ><br>&nbsp;<br>&nbsp;<br>
<input type="button" value="Crear:" onClick="createUsername();">
<select name="username" disabled >
<option value="0">Elige Nombre de Usuario:</option></select><br>&nbsp;<br>
</form>

</div>
</body>
</html> 
La idea es que el "nombre 2º" no sea obligatorio rellenarlo, por lo que si deja en blanco no se muestren las opciones que lo contienen:
Código PHP:
if (arrayName[2] != "")     { (...) 
Pero tiene un Fallo :
Si primero pruebas a rellenar el campo "nombre 2º" y creas los nicks, luego aunque borres ese campo al crear los nicks sigue saliendo en una de las opciones!!!

¿no me explico bien?

Bueno, para ver el fallo:
1.- Rellena todos los campos, incluido el "nombre 2º"
2.- Pulsa "Crear nicks" y veras que en tres de las opciones aparece el texto de "nombre 2º"
3.- Ahora borra el campo "nombre 2º" y pulsa "Crear nicks" de nuevo.
4.- Verás como en el menu desplegable sigue saliendo el valor del campo "nombre 2º" a pesar de haberlo borrado!!!


¿donde está el fallo ?

Muchisimas gracias por leer este mensaje entero, y mil gracias por intentar ayudarme.

Cualquier pista o comentario me serian de gran ayuda, gracias.

Un saludo a todos desde Alicante (España)

Ciao.

Última edición por KarlanKas; 10/04/2003 a las 14:10
  #2 (permalink)  
Antiguo 10/04/2003, 11:04
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 11 meses
Puntos: 61
pon esta linea en la primera de la función:

function createUsername()
{
this.form.username.options.innerHTML="";
...
(resto del código)

Lo que hacía tu código (muy bueno, por cierto, aunque deberías acostumbrarte a empezar los Arrays por 0 en vez de por 1) era sobreescribir cada vez que se ejecutaba las option que ya había y eso tenía un problema: Si antes había más options de las que se generaban no quitaba las anteriores y por tanto las mostraba...

y con este código borra las que había y las vuelve a hacer partiendo de cero y así dejando el número que tiene que haber.

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 10/04/2003 a las 11:10
  #3 (permalink)  
Antiguo 10/04/2003, 13:32
Avatar de Seerkan  
Fecha de Ingreso: febrero-2001
Mensajes: 61
Antigüedad: 23 años, 9 meses
Puntos: 0
De acuerdo

muchas gracias, ahora va perfecto.

quiero añadirle un par de cosas más al script y cuando lo tenga listo lo publico aquí entero por si a alguien le viene bien.

bueno, gracias por tu ayuda de nuevo. ciao.
  #4 (permalink)  
Antiguo 26/04/2003, 11:01
Avatar de Seerkan  
Fecha de Ingreso: febrero-2001
Mensajes: 61
Antigüedad: 23 años, 9 meses
Puntos: 0
Hola de nuevo,

Código PHP:
this.form.username.options.innerHTML=""
no funciona bien en Mozilla , mejor usar:

Código PHP:
document.form.username.innerHTML=""
(con "document" en vez de "this", y sin "options")

Un saludito, .

PD: Lo cierto que es que realmente no se muy bien como actua el innerHTML , así que igual he puesto alguna burrada.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:32.