3 millones en foros del web

Registrarte Políticas Wiki 120segs Ayuda Iniciar sesion

Avisos

Retroceder   Foros del Web > Programación para sitios web > Javascript
Respuesta
 
Herramientas Desplegado
Antiguo 24-ago-2006, 08:30   #1 (permalink)
Moderador
caricatos (Reg: noviembre-2002)
 
15.343 Mensajes
Ubicación: Torremolinos (Málaga)
Enviar un mensaje por Skype™ a caricatos caricatos está desconectado
creación dinámica de formularios (explorer)

Hola:

Para ir al grano voy a poner el código que crea un formulario y que en explorer no funciona:

Código:
<html>
<head>
<script type="text/javascript">
function nF() {
 f = document.createElement("form");
 i = document.createElement("input");
 b = document.createElement("button");
 i.setAttribute("type", "text");
 b.setAttribute("type", "button");
 b.appendChild(document.createTextNode("prueba"));
 i.setAttribute("name", "xx");
 f.setAttribute("name", "f");
 if (document.all) b.attachEvent("onclick", hola);
 else b.addEventListener("click", hola, true);
 f.appendChild(i);
 f.appendChild(b);
 document.body.appendChild(f);
}

function hola(e) {
 if (document.all)
  alert(event.srcElement.form.xx.value);
 else
  alert(e.target.form.xx.value);
}

</script>
</head>
<body onload="nF()">
</body>
</html>
Un botón debería mostrar una alerta con el texto introducido en un campo de texto... va bien en opera y firefox pero no cuela en explorer... y creo que es código correcto.

Gracias
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  Responder Citando
Antiguo 24-ago-2006, 16:33   #2 (permalink)
Cap.Buscapina (Reg: octubre-2004)
 
836 Mensajes
Ubicación: Argentina
Cap.Buscapina está desconectado
parece que adicionandole "document" previo a la llamada al form está el 50% de la solucion.

El otro 50% es que parece que IE asigna el nombre dinamicamente, pero solo lo puedes llamar por el índice

Cita:
<html>
<head>
<script type="text/javascript">
function nF() {
f = document.createElement("form");
i = document.createElement("input");
b = document.createElement("button");
i.setAttribute("type", "text");
b.setAttribute("type", "button");
b.appendChild(document.createTextNode("prueba"));
i.setAttribute("name", "xx");
f.setAttribute("name", "f");
if (document.all) b.attachEvent("onclick", hola);
else b.addEventListener("click", hola, true);
f.appendChild(i);
f.appendChild(b);
document.body.appendChild(f);
}
function hola(e) {
if (document.all)
alert(event.srcElement.document.forms[0][0].value);
else
alert(e.target.form.xx.value);
}

</script>
</head>
<body onload="nF()">
</body>
</html>

no se bien a que apunta este codigo por lo que no se si esta es la solucion integral. Tiene algo que ver con frames o popup?

saludos

PD: la linea verde sobra (creo).
__________________
by Capitán Buscapina
.

Última edición por Cap.Buscapina; 24-ago-2006 a las 16:39
  Responder Citando
Antiguo 24-ago-2006, 20:10   #3 (permalink)
Moderador
caricatos (Reg: noviembre-2002)
 
15.343 Mensajes
Ubicación: Torremolinos (Málaga)
Enviar un mensaje por Skype™ a caricatos caricatos está desconectado
Hola Capi:

Sobre la línea verde: tipo de botón por defecto, en explorer se crean los botones con el tipo button y en FF y opera con submit así que me parece que está bien puesto...

Y la indexación no me vale (no lo había considerado, pero para mis propósitos...)

Verás, el script donde lo uso está en esta página: Fechas... el calendario de pie de página no funciona con este sistema... el del principio sí, pero el formulario se crea con document.write... ¡otro caso polstergate (o como se escriba)!

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  Responder Citando
Antiguo 25-ago-2006, 10:08   #4 (permalink)
Cap.Buscapina (Reg: octubre-2004)
 
836 Mensajes
Ubicación: Argentina
Cap.Buscapina está desconectado
creo que ahora si

el problema parece ser los name's y los id's en IE.

teniendo como base el código del calendario que publicas en tu pagina , solamente le tenés que agregar el atributo "id" a cada elemento del form (y el form inclusive).

sería así:
Cita:
.....
var _calendario = document.createElement("form");
_calendario.name = el_id;
_calendario.id = el_id;


.....
_control = document.createElement("select");
_control.setAttribute("id", "mes");
_control.setAttribute("name", "mes");


.....


_control.name = "aaaa";
_control.id = "aaaa";
No pongo todo el codigo porque no creo que haga falta ya que con solo esos cambios funcionaria en IE.

saludos
__________________
by Capitán Buscapina
.

Última edición por Cap.Buscapina; 25-ago-2006 a las 10:14
  Responder Citando
Antiguo 25-ago-2006, 10:11   #5 (permalink)
Cap.Buscapina (Reg: octubre-2004)
 
836 Mensajes
Ubicación: Argentina
Cap.Buscapina está desconectado
creo que ahora si

<editando>
disculpas, se repitio el mismo mensaje
</editando>
__________________
by Capitán Buscapina
.

Última edición por Cap.Buscapina; 25-ago-2006 a las 10:13 Razón: es que se escribio dos veces lo mismo
  Responder Citando
Antiguo 25-ago-2006, 10:34   #6 (permalink)
Moderador
caricatos (Reg: noviembre-2002)
 
15.343 Mensajes
Ubicación: Torremolinos (Málaga)
Enviar un mensaje por Skype™ a caricatos caricatos está desconectado
Hola Capi, gracias:

Verás, no estoy en la máquina del código, y tengo el tiempo un poco escaso, pero en cuanto pueda lo pruebo y te cuento...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  Responder Citando
Antiguo 26-ago-2006, 08:27   #7 (permalink)
Moderador
caricatos (Reg: noviembre-2002)
 
15.343 Mensajes
Ubicación: Torremolinos (Málaga)
Enviar un mensaje por Skype™ a caricatos caricatos está desconectado
Hola:

Comprobado. Ya he modificado el script, aunque el id se duplicaba porque lo usaba en la tabla... pero lo quité de la tabla y no ha cambiado el aspecto, así que me vale.

Lo miraré con más detenimiento y pondré los créditos.

Muchas gracias, Capi.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  Responder Citando
Antiguo 26-ago-2006, 09:44   #8 (permalink)
Cap.Buscapina (Reg: octubre-2004)
 
836 Mensajes
Ubicación: Argentina
Cap.Buscapina está desconectado
de nada, mi estimado

ha sido un placer.

saludos
__________________
by Capitán Buscapina
.
  Responder Citando
Antiguo 26-ago-2006, 13:01   #9 (permalink)
Colaborador
Panino5001 (Reg: mayo-2004)
 
3.471 Mensajes
Ubicación: Buenos Aires
Panino5001 está desconectado
consulta

Hola, Caricatos, Hola Capi!
No tengo conocimientos acerca de asignar eventos de esta manera y pregunto para aprender solamente. Es decir, con mis preguntas no estoy afirmando nada porque, repito, estoy iniciándome en los eventos del DOM y necesito que me orienten un poco a ver si estoy entendiendo o estoy totalmente confundido (incluso les agradecería lgún link para seguir aprendiendo):
En esta función:
Código:
function hola(e) {
if (document.all)
alert(event.srcElement.document.forms[0][0].value);
else
alert(e.target.form.xx.value);
}
Porqué es necesario utilizar event.srcElement o e.target?
srcElement y target no indican el nodo que generó el evento? Es por el burbujeo que hace que el valor de e.target y event.srcElement terminen convirtiéndose en document? Y en ese caso no conviene detener el burbujeo o simplemente llamar al alert con este argumento en ambos navegadores: document.forms[0][0].value
__________________
Diseño Centell
  Responder Citando
Antiguo 26-ago-2006, 20:16   #10 (permalink)
Moderador
caricatos (Reg: noviembre-2002)
 
15.343 Mensajes
Ubicación: Torremolinos (Málaga)
Enviar un mensaje por Skype™ a caricatos caricatos está desconectado
Hola Panino5001:

La razón de usar e.target y event.srcElement se debe a que para poner un manejador de eventos con el DOM hay que hacerlo con los métodos attachEvent y addEventListener (para explorer y mozilla + navegadores estándar respectivamente)... y mediante esa técnica no se pueden pasar parámetros; por ejemplo, pudiendo usar como parámetro el objeto this es fácil obtener el formulario de donde depende el botón que hemos creado dinámicamente, pero al no poder usar parámetros obtenemos el elemento donde se produjo el evento de esa manera.

Sobre el burbujeo, creo que en este caso no debería haber (pero es un tema que no controlo)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  Responder Citando
Antiguo 26-ago-2006, 21:46   #11 (permalink)
Colaborador
Panino5001 (Reg: mayo-2004)
 
3.471 Mensajes
Ubicación: Buenos Aires
Panino5001 está desconectado
Gracias, Caricatos, queda claro. Un abrazo, Andrés
__________________
Diseño Centell
  Responder Citando
Respuesta
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.

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code está Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado



La zona horaria es GMT -6. Ahora son las 08:34.
Políticas de Uso de Foros del Web


Message Board Statistics

SEO by vBSEO 3.3.2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106