Foros del Web » Programando para Internet » Javascript »

No me reconoce el form

Estas en el tema de No me reconoce el form en el foro de Javascript en Foros del Web. Hola a todos. Tengo que crear dinámicamente uns combos q se rellenan en función de lo que se seleccione en el anterior. Estoy con la ...
  #1 (permalink)  
Antiguo 27/05/2006, 13:08
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
No me reconoce el form

Hola a todos. Tengo que crear dinámicamente uns combos q se rellenan en función de lo que se seleccione en el anterior. Estoy con la versión sencilla de dos combos. El primero lo relleno a mano y en onchange llamo a una función javascript que añade al siguiente combo los valores de un vector que se ha creado anteriormente en php sobre tags en javascript (via echo) que representan cada uno de los desplegables para cada valor del primer combo.

Resulta que el fichero qhace todo esto es un html q se llama dentro d una aplicación llamada moodle. A resultas de esto, el form donde meto los dos combos, parece q no es detectado x javascript, xq en las llamadas nombre_form.combo.disable=true me peta. En la cnsola de javascript de firefox me dice q no sabe lo q es nombre_form...:( y por lo tanto no puedo envia el foco al 2º combo...ni deshabilitar el 2º al principio.

Tampoco me detecta la función...si cuando lo ejecuto el código dentro de un fichero externo a la aplicación y hago dos clicks.

Teneis idea de algo? He probado con todos los tags q me ofrece el dreamweaver: javascrip, javascript1.1, 1.2 1.3 1.4 1.5, jscript y script a secas....

Si quereis os paso el código que tengo o el resultado de ver el código fuente de la página.

A ver que se puede hacer!!
Gracias
  #2 (permalink)  
Antiguo 27/05/2006, 14:39
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
por lo poco que puedo deducir
Cita:
nombre_form.combo.disabled=true
y otra duda que tengo (por algo que mencionas) es si el formulario está en un iframe y la funcion en el documento principal???
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 28/05/2006, 04:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Pregunta No me reconoce el FORM

Hola a todos. Estoy montando unos cmbobox dinámicos. S'e complentan en función de lo que se ha seleccionado antes. Para hacerlo, creo el primer cmbo cn la info de la BD e intnto dejar el 2º deshabilitado. En el evento onchange del primer combo se llama a una función insertar en javascript q rellena el 2º, utilitzando arrays creados en php sobre javascript, haciendo echos en php para que salga como código javascript vamos. Lo hago así para poder trabajar cn las variables de php y la info de la bd, ya que para cada elememento del primer combo, crearé 1 vector que será el desplegable que insertará la función insertar del onchange.

Para asignar un valor al array, he visto que después de crearlo (vec = new Array() ) se llama a una función que hace algo así:

function valores (param_entrada){
this.param_entrada = param_entrada;
}
vec[0] = new valores(valor_recogido_de_BD);

Despues de crear los vectores, cierro el tag de php y declaro la func incluir, que es la que se recorre el vector y comienza a in sertar en el 2º combo. Habilita y pasa el foco al 2º combo.

Y fuera de las function hay un nombre_form.nombre_combo_2.disable=true para deshabilitar el segundo. Pues bién esto mismo ES LO QUE NO ME RECONOCE. Dentro de la aplicaion de e-learning no me reconoce el form, no sabe lo que es...:( y por tanto ni dehabilita ni manda del foco.
Algo curioso es que si ponia javascript en languag del script si que reconocia el form, pero ejecutandolo fuera del ámbito de la aplicación e-learning, vamos haciendo dos clicks directamente. Con language=jscript nada de nada.
En el ámbito de la aplcación, ldonde si se interpreta el php y se acede a la BD ponga lo q ponga no me reconoce el form, dichompor la consola javascript del firefox.

Un saludo a todos, y si quereis os engancho el código.
  #4 (permalink)  
Antiguo 28/05/2006, 04:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cuidado que jscript y javascript no son exactamente lo mismo. El primero es sólo par IE.

Sin ver el código fuente es dificil saber. Si no es muy largo el código ponlo aquí, pero sólo la parte que le llega al navegador (sin php). Si el código generado es muy largo entonces mejor ponlo en algún server para poder probarlo online y ver qué pasa.

un saludo
  #5 (permalink)  
Antiguo 28/05/2006, 05:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Buenos dias d nuevo, buen tardes ya...Tunait te pego el código, verás que no es muy cimplicado. El de verdad tendra 3 combo dinámicos y algo más,pero primero me gustaría que esto funcionara!!

<form name="main">
<select name="cat" onchange="incluir(this.form.cat[selectedIndex].value);">
<?php

global $course;//Aqui se printa el primer cmbox cn datos d BD. Correcto
$wiki_course=get_records('dfwiki', 'course', $course->id);
foreach($wiki_course as $wiki){
echo "<option value=".$wiki->name.">".$wiki->name."</option>";
}
?>
</select>
<select name="sub">//Segundo cmbox..vacio
</select>

<script lang="jscript">
function valores(campo1,campo2){//para insertar text y valor en el array
this.campo1=campo1;
this.campo2=campo2;
}

<?php//código que en teoría debería coger la info de BD, pero lo he hecho a //manopla para que se vea más claro. Fíjate que wiki1 es el valor del cmbox 1º

echo "var wiki1 = new Array();\n";
$ind = 0;
$val="first_wiki1";
echo "wiki1[".$ind."] = new valores('".$val."','".$val."');\n";

$ind = 1;
$val="second_wiki1";
echo "wiki1[".$ind."] = new valores('".$val."','".$val."');\n";

?>
var i;
function incluir(array){
clear();
array=eval(array);//cojo el indentificador. No me reconoce la func eval!!
for(i=0; i<array.length; i++){
var objeto=new Option(array[i].campo1, array[i].campo2);
main.sub.options[i]=objeto;//ya hems añadido eln valor
}
main.sub.disabled=false;//habilitamos el 2º cmbox
main.sub.focus();//le pasamos el foco
}
function clear(){
main.sub.length=0;
}
main.sub.disabled=true;//deshabilita el 2º cmbox...y aquí es donde dice q no //reconoce main, que es el nombre del formulario. Llevo 4 dias con esto y estoy de los nervios :S
</script>
  #6 (permalink)  
Antiguo 28/05/2006, 06:28
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
No hay iframes. He visto el código generado de la página y no hay ningún tag así. Te adjunto el código que queda despues de añadir las cabeceras y demás de la aplicación más el código d mis cmboxes!!Fíjae en lo que está resaltado q no se bien bien....<form name="main"> es lo q yo he escrito...lo de antes...:S

<body class="course course-2 editing" id="course-view">

<

<!-- END OF HEADER -->
<div id="content">
<div class="block-config" id="proba"><h2 class="main">Configurando un bloque [[PruebaBloque]]</h2><form method="post" action=...bla bla...<form name="main">
<select name="cat" onchange="incluir(this.form.cat[selectedIndex].value);">
<option value=Wiki1>Wiki1</option><option value=wiki2>wiki2</option></select>
<select name="cb2">
</select>
</form>
<script lang="javascript">
function valores(campo1,campo2){
this.campo1=campo1;
this.campo2=campo2;
}

var wiki1 = new Array();
wiki1[0] = new valores('first_wiki1','first_wiki1');
wiki1[1] = new valores('second_wiki1','second_wiki1');
var i;
function incluir(array){
clear();
array=eval(array);
for(i=0; i<array.length; i++){
var objeto=new Option(array[i].campo1, array[i].campo2);
main.cb2.options[i]=objeto;
}
main.cb2.disabled=false;
main.cb2.focus();
}
function clear(){
main.cb2.length=0;
}
main.cb2.disabled=true;
</script></td></tr></table></form></div>
</div> <!-- end div content -->

<div id="footer">
<hr size="1" noshade="noshade" />
AQUI PRINTA EL FOOTER DE LA APLICACION...bla bla bla...
</div>
</div>
</body>
</html>
  #7 (permalink)  
Antiguo 28/05/2006, 07:25
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
La verdad , es que es un poco complejo seguirle el hilo al codigo.

con respecto a tu pregunta inicial, yo lo que simpere utilizo para llamar objetos del formularió sería así:

Cita:
document.forms['main']['cb2'].disabled=true
creo que es estandard en todos los navegadores y nunca me dió ningún problema.

Por otro lado, me parece a mi, o hay un form dentro del otro???
__________________
by Capitán Buscapina
.
  #8 (permalink)  
Antiguo 28/05/2006, 07:48
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola de nuevo,

sin ver completo el código javascript que le llega al navegador no puedo hacer pruebas y ver qué pasa, así que sólo puedo echar algunas teorías.

La primera:

Este tag está mal

<script lang="jscript">

debes poner este

<script type="text/javascript">

Segundo sub es una palabra reservada de javascript. Cámbiale el nombre al campo que lleva ese nombre.

<select name="sub">

Basta con que le pongas, por ejemplo, la inicial en mayúscula

<select name="Sub">

Por otro lado debes referenciar a los elementos desde el objeto document y lo estás haciendo desde el form sólo

main.sub.disabled=false;

deberías pedirle document.main.Sub.disabled=false;

aplica lo mismo al resto de líneas que comienzan con main.

Y sin ver el código generado poco más puedo hacer. Prueba con eso y si sigue sin funcionar pon el código que le llega al navegador (sin php) pídeselo desde ver código fuente o mejor aún, cuelga el ejemplo en un servidor.

Un saludo
  #9 (permalink)  
Antiguo 28/05/2006, 08:34
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Creo q si q hay un form dentro de otro...porque hay dos tags de form abiertos...uno lo abro yo y el otro lo ponen las func q printan las cabeceras...y no lo cierran pero supongo q da igual.

Sobre la llamada q me comentas, al hacer document.forms['nombreform']['nombrecombo'].disabled=true, estas diciendo sobre qué formulario(de entre todos los que haya) y qué campo(de los del form elegido) quieres aplicar la propiedad. Supongo q si ubieran 3 diferentes podría llamar a cada uno de esta manera. Yo había pensado hacer alo como Document.form_uno.form_dos.comboboxuno.disabled=tr ue;

Lo probaré ahora, tanto lo tuyo como lo mio y cometo aquí si funciona

GRACIASSSSSSS!!
  #10 (permalink)  
Antiguo 28/05/2006, 08:50
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas,

karlosbd, esto es lo mismo que estás tratando en este otro post o me lo parece a mi ?http://www.forosdelweb.com/showthread.php?t=397414
  #11 (permalink)  
Antiguo 28/05/2006, 09:54
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Tienes toda la razón del mundo. Me he colado. Creía que lo metí en el de php...pero bueno.
He probado lo que me has dicho y funciona perfectamente!! Gracias de nuevo y seguiré este post en vez del otro.

Un saludo
  #12 (permalink)  
Antiguo 28/05/2006, 10:06
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Yap, pero es que no se deben abrir temas duplicados tampoco en distintos foros

Dejo unidos ambos temas

Me alegra que lo solucionaras.

Un saludo
  #13 (permalink)  
Antiguo 28/05/2006, 11:12
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Es que pregunté en el foro de php algo parecido y me dijeron que iciera la prgunta aquí ya que el problema era más de javascript que de php...Siento el malentendido. Ya se que es tontería ocupar espacio en el servidor con cosas repetidas. Mil perdones!! Pero puedo seguir preguntando no? jejej no me castigarás!!
  #14 (permalink)  
Antiguo 28/05/2006, 12:07
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
No te preocupes, hombre ahora ya lo sabes.

No es tanto el espacio en la bd como el que te contesten ususarios en un post lo mismo que ya haya contestado otro. La idea es mantener reunida la toda la info en un mismo tema para que pueda además servir a terceros que lleguen detrás con el mismo problema.

Un saludo
  #15 (permalink)  
Antiguo 29/05/2006, 17:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
Cap.Buscapina al pasar mi código a dinámico(montar los combos con info de la BD) me he dado cuenta, copiando y pegando el código q os dije q funcionaba, que el problema era el form abierto antes del mio, ese código que monta la aplicación(cabeceras, nombre de usuario etc etc sobre el que va mi html...)

Por esa tonterias mas de dos dias dándole vueltas...y con el tiempo que se me hecha encima!!
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 10:07.