Foros del Web » Programando para Internet » Javascript »

Un formularios con ayuda

Estas en el tema de Un formularios con ayuda en el foro de Javascript en Foros del Web. Hola a todos: Necesito saber como hacer esto: Tengo un formulario, en este formulario hay input (Codigo postal), Cuando haces click sobre este input, se ...
  #1 (permalink)  
Antiguo 01/04/2010, 08:17
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Un formularios con ayuda

Hola a todos:

Necesito saber como hacer esto:

Tengo un formulario, en este formulario hay input (Codigo postal), Cuando haces click sobre este input, se abre una ventana (window.opem) con los codigos que puedes poner, que es otro fichero con un listado de los codigos

Quiero que al hacer click sobre el codigo postal que quieres, te traslade al formulario el codigo postal, la poblacion y provincia. Estos tres campos estan en una tabla de la base de datos.

El listado ya muestra los codigos postales, poblacion y provincia. Solo tengo que aprender a traslador estos campos a los input del formulario anterior. Así el usuarios no tiene que teclear la poblacion y provincia.

Un Saludo.
  #2 (permalink)  
Antiguo 01/04/2010, 11:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Un formularios con ayuda

Hola

Sería algo como esto

Código Javascript:
Ver original
  1. function enviar_datos_cliente(){
  2.         window.opener.document.form1.nombre_campo.value ="<?php echo $cliente?>";            
  3.  
  4. self.close()
  5. }

Cita:
<a href="#na" target="popup" hreflang="es" title="Imagen del Producto" onclick="enviar_datos_cliente();">Enviar Datos Al Form</a>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 02/04/2010, 10:22
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Perdona.

Para alquien que sepa, seria estupendo, pero para uno que empezando me es muy dificil interpretar donde va cada cosa.

Podrias ser un poco mas extensivo. Un ejemplo seria fabuloso.

Gracias.
  #4 (permalink)  
Antiguo 02/04/2010, 13:04
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Un formularios con ayuda

Hola

Veamos un ejemplo practico

Abrir_popup.html

Código javascript:
Ver original
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function abrir () {
  5. var ancho = parseInt(((screen.width) / 2) - 150);
  6. var alto = parseInt(((screen.height) / 2) - 150);
  7. window.open('insertar_datos_desdepopup.php','popup','resizable=yes, top='+alto+', left='+ancho+', width=300 ,height=300,  menubar=no, scrollbars=no, status=no, titlebar=no, toolbar=no,directories=no');
  8. }
  9. </script>
  10. </head>
  11. <body>
  12. <a href="javascript:void(0);" target="popup" hreflang="es" title="Imagen del Producto" onclick="abrir();">Abrir POPUP</a><br /><br />
  13. <form name="form1">
  14. Razon: <input type="text" id="camp1" name="camp1" value="" /><br />
  15. Cliente: <input type="text" id="camp2" name="camp2" value="" /><br />
  16. Calle: <input type="text" id="camp3" name="camp3" value="" />
  17. </body>
  18. </html>

insertar_datos_desdepopup.php

Código PHP:
Ver original
  1. <?php
  2. $razon = "Por que quiero";
  3. $cliente = 12;
  4. $calle = "Italia";
  5. ?>
  6. <html>
  7. <head>
  8. <script type="text/javascript">
  9. function enviar_datos_cliente(){
  10.         window.opener.document.form1.camp1.value ="<?php echo $razon?>";        
  11.         window.opener.document.form1.camp2.value ="<?php echo $cliente?>";            
  12.         window.opener.document.form1.camp3.value ="<?php echo $calle?>";
  13. self.close()
  14. }
  15.  
  16. </script>
  17. </head>
  18. <body>
  19. Estos serán los datos que se enviarán al form<br />
  20. Razon: <?php echo $razon?><br />
  21. Cliente: <?php echo $cliente?><br />
  22. Calle: <?php echo $calle?><br /><br />
  23. <a href="#na" target="popup" hreflang="es" title="Imagen del Producto" onclick="enviar_datos_cliente();">Enviar Datos Al Form</a>
  24. </body>
  25. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 03/04/2010, 03:10
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Muy bueno a funcionado a la primera.

Si no es mucho pedir. Ten en cuenta que con tu ejemplo (muy bueno de entender), estoy pasando literales que previamente he definido.

Pero cuando son los valores de unos registros de una tabla de tu db que has listado, como es:

1.- Tienes que hacer un mysql_query del registro para obtener el resto de los valores, o solo haciendo click sobre el registro ya obtendrias los valores, si es así, cual seria la sintaxis en la cabecera head.

Un Saludo Adler.

PD: Que dios te guarde muchos años.
  #6 (permalink)  
Antiguo 03/04/2010, 04:26
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Un formularios con ayuda

Hola

Tienes que hacer la consulta para traer los valores del registro

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 03/04/2010, 08:29
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Correcto:

De acuerdo, en la ventana emergente tienes todos los códigos postales. Haciendo click sobre uno de ellos seleccionas el registro. Vuelves hacer sql sobre la tabla para seleccionar el registro seleccionado. Los campos se vuelcan sobre las variables, he comprabado con echo que las variables tiene el valor deseado. Pero la función no se ejecuta.

Mira aquí por el código para saber que hago mal.

Código PHP:
<?php
$nombre_session 
"sesion_paneldream";
session_name($nombre_session);
session_start();
require(
"../con_bd.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="includes/admin_styles.css" type='text/css' rel='stylesheet'>
<title>Buscador de Códigos Postales</title>

<script language="javascript" type="text/javascript">
  function InsertarCodigos(){
    window.opener.document.editarpiso.CodPost.value="<?php echo $CodiPost?>";
    window.opener.document.editarpiso.Pobl.value="<?php echo $Pobl?>";     
    window.opener.document.editarpiso.Prov.value="<?php echo $Prov?>";          
    self.close();
   }
</script>
</head>
 <body>
     <table>
     <tr>
     <td width='50'height="20" class="Esquema">C&oacute;digo</td>
     <td width='300' class="Esquema" align="center">Poblaci&oacute;n</td>
     <td width='100' class="Esquema" align="center">Provincia</td>      
    </tr>
      <?php
        $_pagi_sql 
"SELECT * FROM poblaciones Order by NombPobl";
        
$query mysql_query($_pagi_sql);
        while (
$sql2 mysql_fetch_array($query)) {
          echo 
"<tr><td class='Campo' align='center'>$sql2[CodiPost]</td>
       <td class='Campo' align='left'><a href='dgcopost.php?sec=asignarcodigos&cd=$sql2[CodiPost]'>$sql2[NombPobl]</a></td>
       <td class='Campo' align='center'>$sql2[NombProv]</td></tr>"
;
        }
       
?>
     </table>
     
<?php 
  
switch ($_GET["sec"]) {
    case 
'asignarcodigos';
      
$rescod mysql_query("SELECT * FROM poblaciones Where CodiPost='$_GET[cd]'");
      
$cod mysql_fetch_array($rescod);
      
$CodiPost="$cod[CodiPost]";
      
$Pobl="$cod[NombPobl]";
      
$Prov="$cod[NombProv]";
      }
  
?>
   <a href="javascript=InsertarCodigos();"</a>
 </body>
</html>
Y la ventana no se cierra, hacer la seleccion la hace bien, yq que he puesto unos echo y los valores de los campos aparecen.

Un Saludo y si me pueden echar un cable, Gracias.
  #8 (permalink)  
Antiguo 03/04/2010, 12:33
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Un formularios con ayuda

Hola

Esto está mal

Cita:
<a href="javascript=InsertarCodigos();"</a>
en todo caso

Cita:
<a href="javascript:InsertarCodigos();">Insertar Datos</a>
pero leete este articulo sobre javascript no intrusivo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 04/04/2010, 10:56
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Sigue sin ejecutar la sentencia de InsertarCodigos()

Hay varios hilos, pero ninguno da con la solución, y es un tema que esta bastante solicitado por lo que he podido ver.

Haciendo Debug con un IDE, puedes comprobar que la instrucción no se cumple, he intentado varios veces sacarla de donde esta y ponerla en varios sitios.

Si alguien pude seguir.

Gracias
  #10 (permalink)  
Antiguo 04/04/2010, 12:59
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Un formularios con ayuda

Hola

LLeva la función al final, justamente antes de </body>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 04/04/2010, 16:57
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Hola Adler:

Esto sigue sin salir, llevo la hostia de horas buscando y buscando.

No tiene que ser tan dificil, la mayora de los hilos que he encontrado se refieren a un boton que ejecuta la función.

Creo que lo que yo pretendo no estan dificil. Mostrar en una ventana popup, un listado mostrado "Codigo Postal Poblacion Provincia" con el raton haces click sobre uno y acto seguido se cierra el popup y el codigo postal, población y provincia te los coloca en los input de la ventana padre.

Lo bueno es que hay bastantes hilos, pero ninguno como este de enviar a la ventana padre los datos haciendo click sobre un registro de una tabla que has rellenado con los datos guardados. Todos hacen referencia a clickear sobre un boton.

El código que tengo esta expuesto anteriormente en este hilo.

Un Saludo.
  #12 (permalink)  
Antiguo 05/04/2010, 07:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Un formularios con ayuda

Hola

A ver te he montado esto, pruebalo

Código Javascript:
Ver original
  1. <?php
  2. $razon = "Por que quiero";
  3. $cliente = 12;
  4. $calle = "Italia";
  5. $razon2 = "¿Por que no?";
  6. $cliente2 = 23;
  7. $calle2 = "La mia";
  8. ?>
  9. <html>
  10. <head>
  11. <script type="text/javascript">
  12. function Evento() {
  13. var trs = document.getElementById('tabla').getElementsByTagName('tr');
  14.     for(i=0; i < trs.length; i++) {
  15.         (function() {
  16. var elemento = trs[i];
  17. var nomevento = "click";
  18. var funcion = function() {
  19.     enviar_datos_cliente(this.id)
  20. }
  21.             if (elemento.attachEvent) {
  22.                     var f=function(){
  23.                         funcion.call(elemento,window.event);
  24.                     }
  25.                 elemento.attachEvent('on'+nomevento,f);
  26.                 return true;
  27.             }
  28.             else  
  29.                 if (elemento.addEventListener) {
  30.                         elemento.addEventListener(nomevento,funcion,false);
  31.                         return true;
  32.                     }
  33.             else
  34.                     return false;
  35.             }
  36.         )()
  37.         }
  38.  
  39. }
  40. window.onload = Evento;
  41. </script>
  42. </head>
  43. <body>
  44. Estos serán los datos que se enviarán al form
  45. <table border="1px" id="tabla">
  46. <tr>
  47. <th>Razon</th>
  48. <th>Cliente</th>
  49. <th>Calle</th>
  50. </tr>
  51. <tr id="0">
  52. <td id="R0"><?php echo $razon?></td>
  53. <td id="C0"><?php echo $cliente?></td>
  54. <td id="Ca0"><?php echo $calle?></td>
  55. </tr>
  56. <tr id="1">
  57. <td id="R1"><?php echo $razon2?></td>
  58. <td id="C1"><?php echo $cliente2?></td>
  59. <td id="Ca1"><?php echo $calle2?></td>
  60. </tr>
  61. </table>
  62. <script type="text/javascript">
  63. function enviar_datos_cliente(id){
  64.         window.opener.document.form1.camp1.value = document.getElementById('R'+id).innerHTML;        
  65.         window.opener.document.form1.camp2.value = document.getElementById('C'+id).innerHTML;            
  66.         window.opener.document.form1.camp3.value = document.getElementById('Ca'+id).innerHTML;
  67. self.close()
  68. }
  69. </script>
  70. </body>
  71. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #13 (permalink)  
Antiguo 05/04/2010, 09:58
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Hola Adler:

Muchisimas gracias por la molestia que te tomas.

Tu código funciona de coña. Pero no se adaptarlo al listado de los registros de la tabla de datos. De todas maneras he conseguido traslador un campo. Me explico, Cuado clickear sobre un registro de la tabla de codigos postales se ejecuta, se cierra la ventana hija y en los input de la ventana padre en un campo pone el valor del registro (codigopostal) pero en los otros dos pone "undefined", esta claro que algo hace, pero ahora lo que hay que averigurar es que pasa con los otros dos campos.

Pongo el código:
Código PHP:
<?php
$nombre_session 
"sesion_paneldream";
session_name($nombre_session);
session_start();
require(
"../con_bd.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="includes/admin_styles.css" type='text/css' rel='stylesheet'>
<title>Buscador de Códigos Postales</title>

<script language="javascript" type="text/javascript">
  function InsertarCodigos(CodiPost,PoblPiso,ProvPiso){
    window.opener.document.editarpiso.CodPost.value=CodiPost;    
    window.opener.document.editarpiso.PoblPiso.value=PoblPiso;        
    window.opener.document.editarpiso.ProvPiso.value=ProvPiso;                  
    window.close();  
   }
</script>
</head>
 <body>
  <form name="form1" method="POST">
     <table>
     <tr>
     <td width='50'height="20" class="Esquema">C&oacute;digo</td>
     <td width='300' class="Esquema" align="center">Poblaci&oacute;n</td>
     <td width='100' class="Esquema" align="center">Provincia</td>      
    </tr>
      <?php
        $_pagi_sql 
"SELECT * FROM poblaciones Order by NombPobl";
        
$query mysql_query($_pagi_sql);
        while (
$sql2 mysql_fetch_array($query)) {
          echo 
"<tr><td class='Campo' align='center'>$sql2[CodiPost]</td>
       <td class='Campo' align='left'><a href='javascript:InsertarCodigos($sql2[CodiPost])'>$sql2[NombPobl]</a></td>
       <td class='Campo' align='center'>$sql2[NombProv]</td></tr>"
;
        }
       
?>
     </table>
  </form>
 </body>
</html>
Si en la instrucción <a href='javascript:InsertarCodigos($sql2[CodiPost])'> pongo mas de un parametro, osea ademas de pasar el codipost, pasar el nombre de la ciudad, ya no funciona, no cierra la ventana, ni hace nada sequeda donde esta.

Entonces creo que el problema esta en como pasar más de un parametro a la función. He visto otro hilo, ahora mismo no se en que foro, que le pasaba lo mismo, lo malo es que no tenia continuidad.

Un Saludo.
  #14 (permalink)  
Antiguo 06/04/2010, 16:10
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Un formularios con ayuda

Me respondo a mi mismo:

Para el que haya seguido este hilo. Me ha sido imposible encontrar la solucilón de que al clickear sobre una fila de una tabla en la cual vuelcas los codigos postales, poblacion y provincia o estado de tu base de datos en una ventana secundaria y con esos datos actualizarlos en los input de la ventana principal para asi ahorrar tiempo al usuario que sabiendo el codigo postal, el campo de poblacion y provincia o estado se completan.

Lo que al final he hecho es poner los campos del registro seleccionado en input de la ventana secundaria y luego con un boton de actualizar o traspasar a la ventana principal.

Mis saludos y gracias a Adler.

Aqui pongo el código.

Código PHP:

<?php
$nombre_session 
"sesion_paneldream";
session_name($nombre_session);
session_start();
require(
"../con_bd.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="includes/admin_styles.css" type='text/css' rel='stylesheet'>
<title>Buscador de Códigos Postales</title>

<script language="javascript" type="text/javascript">
  function InsertarCodigos(){
    window.opener.document.editarpiso.CodPost.value= window.document.form1.CodiPost.value;    
    window.opener.document.editarpiso.PoblPiso.value=window.document.form1.NombPobl.value;        
    window.opener.document.editarpiso.ProvPiso.value=window.document.form1.NombProv.value;;                  
    window.close();
   }
</script>
</head>
 <body>
  <form name="form1" method="POST">
     <table>
     <tr>
     <td width='50'height="20" class="Esquema">C&oacute;digo</td>
     <td width='300' class="Esquema" align="center">Poblaci&oacute;n</td>
     <td width='100' class="Esquema" align="center">Provincia</td>      
    </tr>
      <?php
        $_pagi_sql 
"SELECT * FROM poblaciones Order by NombPobl";
        
$query mysql_query($_pagi_sql);
        while (
$sql2 mysql_fetch_array($query)) {
          echo 
"<tr><td class='Campo' align='center'>$sql2[CodiPost]</td>
             <td class='Campo' align='left'><a href='dgcopost.php?sec=asignarcodigos&cd=$sql2[CodiPost]'>$sql2[NombPobl]</a></td>
       <td class='Campo' align='center'>$sql2[NombProv]</td></tr>"
;
        }
       
?>
     </table>
<?php 
  
switch ($_GET["sec"]) {
    case 
'asignarcodigos':
      
$rescod mysql_query("SELECT * FROM poblaciones Where CodiPost='$_GET[cd]'");
      
$cod mysql_fetch_array($rescod);
      }
  
?>
     <table>
     <tr></tr>
     <tr><td width="60" valign="middle"><input name="CodiPost" type="text" style="text-align:center;" class="CampoSolo" id="CodiPost"  value="<?php echo $cod[CodiPost]?>" size="7" maxlength="5"></td>
         <td width="200" valign="middle"><input name="NombPobl" type="text" style="text-align:left;" class="CampoSolo" id="NombPobl"  value="<?php echo $cod[NombPobl]?>" size="35"></td>     
         <td width="60" valign="middle"><input name="NombProv" type="text" style="text-align:left;" class="CampoSolo" id="NombProv"  value="<?php echo $cod[NombProv]?>"></td>     
     </tr>
     <tr></tr>
     </table>
     <table>
     <tr><td align="center"><a href="javascript:InsertarCodigos();">Pasar Valores</a></td></tr>
     </table>
  </form>
 </body>
</html>
Un Saludo.

Etiquetas: formulario
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 00:01.