Foros del Web » Creando para Internet » HTML »

Modificar un campo de un formulario desde otro frame

Estas en el tema de Modificar un campo de un formulario desde otro frame en el foro de HTML en Foros del Web. Hola forer@s: Tengo un frame llamado superior en el que tengo un formulario con 2 campos: doctor y fecha. Código HTML: <!-- (superior.php) --> <form ...
  #1 (permalink)  
Antiguo 16/03/2005, 08:18
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Modificar un campo de un formulario desde otro frame

Hola forer@s:

Tengo un frame llamado superior en el que tengo un formulario con 2 campos: doctor y fecha.
Código HTML:
<!-- (superior.php) -->

<form name="fechaCita" method="get" action="inferior.php" target="inferior"> 
 <font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
  <strong>Fecha cita:</strong> 
 </font> 
 <?php
   escribe_formulario_fecha_vacio("fecha","fechaCita"); 
   // abre una ventana desde la que se puede seleccionar la fecha comodamente  
 ?>
 <?php 
    include("conexion.phtml"); 
    $link=Conectarse(); 
    $result=mysql_query("select Codigo,Nombre from doctores",$link); 
 ?>
 <font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">
   <strong>Doctor: </strong>
   <select name="doctor" onChange="window.document.fechaCita.submit()">  
     <option value=0 selected> Seleccione un doctor </option>
     <?php 
        while($row = mysql_fetch_array($result)) 
          { 	
	     echo  "<option value= ". $row['Codigo'] .">".$row['Nombre']."\n";
	     echo "</option>";
          } 
        mysql_free_result($result); 
        mysql_close($link); 
     ?>
   </select> 	
 </font>
</form> 
Y en otro frame llamado inferior visualizo las citas del doctor elegido en la fecha seleccionada.
Y también permito moverse a un día antes o un día despues. Y aquí está mi problema: Necesito modificar el día en el frame superior, en el campo fecha.
El código en el que me muevo de día es:

Código PHP:
//(inferior.php)

echo '<form name="siguienteDia" method="get" action="inferior.php">
      <input type="hidden" name="doctor" value="'
.$doctor.'"> 
      <input type="hidden" name="fecha" value="'
.$fecha_sig.'">
      <input type="image" src="../Imagenes/siguiente.JPG"> 
      </form>'
;
echo 
'<form name="dia_anterior" method="get" action="inferior.php">
      <input type="hidden" name="doctor" value="'
.$doctor.'"> 
      <input type="hidden" name="fecha" value="'
.$fecha_ant.'">
      <input type="image" src="../Imagenes/anterior.JPG">
      </form>'

¿Alguien podría decirme por donde empieza una buena solución para modificar desde inferior.php el contenido del campo fecha, que está en superior.php ?
Gracias de antemano.

Última edición por lcrecarey; 16/03/2005 a las 08:23
  #2 (permalink)  
Antiguo 16/03/2005, 08:36
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Se hace así

nombre_ventana.nombre_fiormulario.nombre_campo.val ue = "Soy lo más!!!";

en tu caso no lo leí todo pero sería

superior.formulario.nombre.value = "MonoSwim";

Espero que te sirva, saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 16/03/2005, 08:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola lcrecarey:

Veo que sigues con tu página, y te ha funcionado sin el uso de javascript, pero en este caso me parece que lo mejor es usar ese lenguaje...

Puedes hacerlo desde un script del mismo marco o desde el marco hermano...

La cuestión es que para comunicarse entre marcos hermanos (frames) hay que pasar por el padre (parent)... y la solución javascript es desde el evento onsubmit del formulario.

echo '<form name="siguienteDia" method="get" action="inferior.php" onsubmit="parent.superior.modificar(fecha.value)">
<input type="hidden" name="doctor" value="'.$doctor.'">
<input type="hidden" name="fecha" value="'.$fecha_sig.'">
<input type="image" src="../Imagenes/siguiente.JPG">
</form>';

Y en el marco superior definir la función modificar más o menos así:

function modificar(nuevaFecha) {
document.forms.fechaCita.fecha.value = nuevaFecha
}

Nota: Supongo que la fecha es un campo del formulario con el nombre fecha...

Espero que te sirva.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 16/03/2005, 10:04
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola!
Probé con
Código HTML:
<form name="siguienteDia" method="get" action="inferior.php" onsubmit="parent.superior.modificar("<?php $fecha_sig ?>")">
...
</form> 
y con
Código HTML:
...
<input type="image" src="../Imagenes/siguiente.JPG" onClick="superior.fechaCita.fecha.value =" <?php $fecha_sig ?>  "  >
...
pero los dos me hacen lo mismo: Me dejan el frame superior intacto y el inferior vacío.
Me pregunto si el problema puede estar en el campo fecha, que no se "declara" explícitamente en superior.php.
Código HTML:
<form name="fechaCita" method="get" action="inferior.php" target="inferior"> 
 <font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
  <strong>Fecha cita:</strong> 
 </font> 
 <?php
   escribe_formulario_fecha_vacio("fecha","fechaCita"); 
   // abre una ventana desde la que se puede seleccionar la fecha comodamente  
 ?>
</form> 
sino que se pasa su nombre a la función y se "crea" en calendario.php:
Código PHP:
function escribe_formulario_fecha_vacio($nombrecampo,$nombreformulario)
{
global 
$raiz;
echo 
'
<INPUT name="'
.$nombrecampo.'" size="10">
<input type=button value="Seleccionar fecha" onclick="muestraCalendario(\''
$raiz.'\',\''$nombreformulario .'\',\''.$nombrecampo.'\')">
'
;    

¿Alguna sugerencia de si puede ser ese el problema?
Gracias por vuestra colaboración.
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 19:05.