Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   HTML (http://www.forosdelweb.com/f4/)
-   -   Modificar un campo de un formulario desde otro frame (http://www.forosdelweb.com/f4/modificar-campo-formulario-desde-otro-frame-280189/)

lcrecarey 16/03/2005 08:18

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>'


:pensando: ¿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.

monoswim 16/03/2005 08:36

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

caricatos 16/03/2005 08:47

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... :pensando:

Espero que te sirva.

Saludos :arriba:

lcrecarey 16/03/2005 10:04

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. :-)


La zona horaria es GMT -6. Ahora son las 02:43.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.