Foros del Web » Programando para Internet » Javascript »

formulario HTML dinamico

Estas en el tema de formulario HTML dinamico en el foro de Javascript en Foros del Web. Hola a todos, Estaba desarrollando un formulario para una web, en el cual el usuario debe introducir informacion sobre un punto de interes(POI). El tema ...
  #1 (permalink)  
Antiguo 21/05/2010, 16:23
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
formulario HTML dinamico

Hola a todos,

Estaba desarrollando un formulario para una web, en el cual el usuario debe introducir informacion sobre un punto de interes(POI).

El tema esta en que ademas del nombre, la direccion, telefono de contacto y tal, queria que tuviera tambien la opcion de elegir el tipo de POI, es decir un restaurante, un hotel, una hostal...

Hasta ahi todo bien, creo una serie de campos y un menu desplegable con las diferentes opciones de POI.

Lo que queria hacer tambien es un apartado dentro del formulario que se genere de forma dinámica, en función del tipo de POI elegido en la opcion anterior es decir, si el usuario eligio un hotel, pues que pueda seleccionar si se trara de un B&B, si tiene wifi, si tiene piscina...

Por el contrario si eligio un restaurante, la mayoria de las facilidades no son complatibles con las del hotel, como es el caso de la piscina o lo de Bed&breakfast, pero sin embargo si que seria interesante que el usuario pudiera indicar por ejemplo el tipo de comida (italiana, china), si tiene servicio de llevar a casa, si tiene servicio de takeaway y cosas asi.

Vamos lo que quiero es que se generase de forma dinamica otro subapartado en el formulario que ofreciese diferentes opciones segun el tipo de POI escogido.


Sabrias como podria hacer esto?? Debo combinarlo con PHP [y por tanto cambiar este mensaje al foro de PHP]

Muchas gracias por vuestra ayuda y saludos a todos
  #2 (permalink)  
Antiguo 21/05/2010, 19:41
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: formulario HTML dinamico

Hola amigo, mira verás eso lo puedes hacer tanto como PHP como con JavaScript y tambien con Ajax.

Yo te recomendaría, por lo más facil que sería con javascript.

mira te voy a dar una idea de como lo puedes lograr, en el foro de javascript puedes preguntar al respecto.

1.- Puedes crear distintas capas DIVS con donde los identifiques con un Id especifico.

Por ejemplo
Código HTML:
Ver original
  1. <div id="restaurante" style="display:none;">
  2.    Aqui metes los campos de formularios que deseas mostrar para restaurante
  3. </div>
  4.  
  5. <div id="hotel" style="display:none;">
  6.    Aqui metes los campos de formularios que deseas mostrar para hoteres
  7. </div>

Y ahora en el select del formulario donde el usuario escoje una opcion (restaurante, hotel. etc..) colocarle una function en el onclick
ejemplo:
Código HTML:
Ver original
  1.  <option onclick="showOptions('restaurante');">Restaurante</option>
  2.  <option onclick="showOptions('hotel');">Hotel</option>

Y el javascript sería algo así:
Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.   function showOptions(t){
  3.         document.getElementById(t).style.display = 'block';  
  4.   }
  5. </script>

Saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 22/05/2010, 02:57
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Buenas

Muchas gracias por el aporte, la verdad es que no conocia esa funcionalidad del HTML, y me parece que la estoy implementando mal. Segui tu consejo y la hice asi:

Código HTML:
<form action="login.php" method="post">
	

	 
      <select>

       <option onclick="showOptions('restaurante');">Restaurante</option>

       <option onclick="showOptions('hotel');">Hotel</option>

      </select>

	 
      <div id="restaurante" style="display:none;">
  
         
	<select name="servicios">
	
	<option value="TakeAway">TakeAway</option>
	
	<option value="Domicilio">ServicioDomicilio</option>
	
	<option value="WiFi">WiFi</option>
	
	<option value="GolTV">GolTV</option>
	
	</select>

      </div>

       

      <div id="hotel" style="display:none;">

         
	<select name="servicios">
	
	<option value="B&B">B&B</option>
	
	<option value="piscina">piscina</option>
	
	<option value="WiFi">WiFi</option>
	
	<option value="Minibar">Minibar</option>
	
	</select>

      </div> 

Pero no funciona, asi k algo debo estar haciendo mal.Solo salen las opciones restautante y hotel, pero genera nada dinamicamente :S

¿Donde estoy fallando?

Gracias nuevamente
  #4 (permalink)  
Antiguo 22/05/2010, 13:25
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: formulario HTML dinamico

Hola amigo, verás si funciona lo acabo de probar.

Probablemente te has olvidado de indicar el script JS en el documento HTML.

Yo he echo uno y lo he probado, añadi 1 nueva funcion, la de ocultar la capa que no estes solicitando ya que al presionar sobre cualquier opcion la capa se muestra y al presionar sobre la otra opcion esta misma capa sigue mostrandose y tambien la que acabas de solicitar.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. <script language="javascript" type="text/javascript">
  6.   function showOptions(s,h){
  7.         document.getElementById(s).style.display = 'block';
  8.         document.getElementById(h).style.display = 'none';
  9.   }
  10. </head>
  11.  
  12.  
  13.  
  14. <form action="login.php" method="post">
  15.    
  16.  
  17.      
  18.       <select>
  19.  
  20.        <option onclick="showOptions('restaurante','hotel');">Restaurante</option>
  21.  
  22.        <option onclick="showOptions('hotel','restaurante');">Hotel</option>
  23.  
  24.       </select>
  25.  
  26.      
  27.       <div id="restaurante" style="display:none;">
  28.  
  29.          
  30.     <select name="servicios">
  31.    
  32.     <option value="TakeAway">TakeAway</option>
  33.    
  34.     <option value="Domicilio">ServicioDomicilio</option>
  35.    
  36.     <option value="WiFi">WiFi</option>
  37.    
  38.     <option value="GolTV">GolTV</option>
  39.    
  40.     </select>
  41.  
  42.       </div>
  43.  
  44.        
  45.  
  46.       <div id="hotel" style="display:none;">
  47.  
  48.          
  49.     <select name="servicios">
  50.    
  51.     <option value="B&B">B&B </option>
  52.    
  53.     <option value="piscina">piscina</option>
  54.    
  55.     <option value="WiFi">WiFi</option>
  56.    
  57.     <option value="Minibar">Minibar</option>
  58.    
  59.     </select>
  60.  
  61.      </div>
  62.  
  63. </form>
  64. </body>
  65. </html>

Saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Última edición por iovan; 22/05/2010 a las 13:31
  #5 (permalink)  
Antiguo 23/05/2010, 13:08
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Funciona de lujo. Muchas gracias
  #6 (permalink)  
Antiguo 23/05/2010, 19:25
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Buenas, veras intente ir un paso mas alla aprovechando el codigo que me habias dejado escrito, e incorpore el menu desplegable dentro de un formaulario mas grande que ya tenia desarrollado. El problema es que no entendi muy bien alguna de las funciones que escribiste, sobre todo lo relativo a javascrip. Supongo que lo que hace es asignar dos tipo de variables, unas que permaneceran ocultas(h) y otras que se mostraran(s) en funcion de la opcion seleccionada. Pero al introducir 4 tipos de variables se acaban solapando los menus y me aparecen unos a continuacion de los otros y cosas asi. Que es lo que estoy haciendo mal en el sigueinte codigo??

Código HTML:
<fieldset><legend>Tipo de Punto de Interés:</legend>
	
	
   	<script language="javascript" type="text/javascript">
 
        function showOptions(h,s){
   
              document.getElementById(s).style.display = 'block';
   
              document.getElementById(h).style.display = 'none';
 
        }
  
      </script>
 
      </head>
 
      <body>

      <form action="routing.php" method="post">

            <select>
  
             <option onclick="showOptions('bar','hotel','pub','restaurante');">Restaurante</option>
 
             <option onclick="showOptions('bar','restaurante','pub','hotel');">Hotel</option>

	     <option onclick="showOptions('restaurante','hotel','pub','bar');">Bar</option>

	     <option onclick="showOptions('bar','restaurante','hotel','pub');">Pub</option>
  
            </select>
  
            <div id="hotel" style="display:none;">
         
	<INPUT type="hidden" NAME="tipo" value="hotel">
	<INPUT TYPE="CHECKBOX" NAME="B&B" value="B&B">Bed&Breakfast<BR>
 	<INPUT TYPE="CHECKBOX" NAME="Parking" value="Parking">Parking privado<BR>
	<INPUT TYPE="CHECKBOX" NAME="Wifi" value="Wifi">Wifi<BR>
	<INPUT TYPE="CHECKBOX" NAME="Piscina" value="Piscina">Piscina<BR>
	<INPUT TYPE="CHECKBOX" NAME="Animacion" value="Animacion">Servicio de Animacion<BR>

            </div>

            <div id="restaurante" style="display:none;">

	<INPUT TYPE="hidden" NAME="tipo" value="restaurante">
	<INPUT TYPE="CHECKBOX" NAME="ServicioDomicilio" value="ServicioDomicilio">Servicio a domicilio<BR>
 	<INPUT TYPE="CHECKBOX" NAME="PPV" value="PPV">PPV<BR>
	<INPUT TYPE="CHECKBOX" NAME="Parkingprivado" value="Parkingprivado">Parking privado<BR>
        <INPUT TYPE="CHECKBOX" NAME="Menuinfantil" value="Menuinfantil">Menu infantil<BR>
	<INPUT TYPE="CHECKBOX" NAME="Menuvegetariano" value="Menuvegetariano">Menu vegetariano<BR>
	<INPUT TYPE="CHECKBOX" NAME="Bodas" value="Bodas">Salon especial para bodas<BR>

           </div>

	<div id="bar" style="display:none;">

	<INPUT TYPE="hidden" NAME="tipo" value="bar">
	<INPUT TYPE="CHECKBOX" NAME="ServicioDomicilio" value="ServicioDomicilio">Servicio a domicilio<BR>
 	<INPUT TYPE="CHECKBOX" NAME="PPV" value="PPV">PPV<BR>
	<INPUT TYPE="CHECKBOX" NAME="Parkingprivado" value="Parkingprivado">Parking privado<BR>
        <INPUT TYPE="CHECKBOX" NAME="Menudia" value="Menudia">Menu del dia<BR>
	<INPUT TYPE="CHECKBOX" NAME="Sidreria" value="Sidreria">Sidreria<BR>
	<INPUT TYPE="CHECKBOX" NAME="TakeAway" value="TakeAway">Menus para llevar<BR>

           </div>


	<div id="pub" style="display:none;">

	<INPUT TYPE="hidden" NAME="tipo" value="pub">
	<INPUT TYPE="CHECKBOX" NAME="billar" value="billar">Billar<BR>
 	<INPUT TYPE="CHECKBOX" NAME="Pistabaile" value="Pistabaile">Pista de baile<BR>
	<INPUT TYPE="CHECKBOX" NAME="cocteles" value="cocteles">Carta de cocteles<BR>
        <INPUT TYPE="CHECKBOX" NAME="chupitos" value="chupitos">Carta de chupitos<BR>
	<INPUT TYPE="CHECKBOX" NAME="karaoke" value="karaoke">karaoke<BR>

           </div>

	
	</fieldset> 
Muchas gracias y un saludo nuevamente
  #7 (permalink)  
Antiguo 23/05/2010, 20:55
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 2 meses
Puntos: 998
Respuesta: formulario HTML dinamico

Cita:
Muchas gracias por el aporte, la verdad es que no conocia esa funcionalidad del HTML
eso no es html sino javascript, muevo a ese foro.
__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #8 (permalink)  
Antiguo 24/05/2010, 08:10
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Pero si de javascrip hay solo tres lineas!!! el resto es todo HTML, te pediria que lo devolvieras al otro foro, porque es posible que el miembro de la comunidad que me estaba ayudando, NEW, no pueda encontrarlo y no pueda seguir ayudandome.

Saludos
  #9 (permalink)  
Antiguo 24/05/2010, 08:12
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 2 meses
Puntos: 998
Respuesta: formulario HTML dinamico

hombre, es todo javascript, lo que va entre los onclick también es js. Justamente es de html lo que tienes 3 líneas.
  #10 (permalink)  
Antiguo 24/05/2010, 08:46
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Ah ok. Y sabrias explicarme que es lo que estoy haciendo mal?? No entiendo que fue lo que modifique del código, poruqe ahora cuando intento hacer el formulario de forma dinamica, y que segun seleccione el usuario uno de los tipos de POI salgan tan solo sus opciones, pues en vez de eso me aparecen unas a continuacion de las otras.

Yo de Javascrip no controlo nada, pero viendo un poco lo que NEW escribio en sus comentarios deduzco que creo una funcion que les da a las varibales la propiedad de aparecer(s) o desaparecer(h), y luego aplica esa funcion a las variables que aparecen en el select para que tan solo una aparezaca.

Pero yo intente hacerlo mas complejo y que haya 4 variables en el select, por lo que en el showOptions paso 4 identificadores de variable (la verdad sk no se como llamarlo), con la intencion de que 3 reciban la propiedad (h) y solo una la propiedad (s). Pero no funciona

Sabrias decirme que estoy haciendo mal??

Saludos y muchas gracias
  #11 (permalink)  
Antiguo 25/05/2010, 07:44
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Alguien sabe como podria cambiar el titulo del tema por "Formulario en Javascript dinamico"??
  #12 (permalink)  
Antiguo 29/05/2010, 09:19
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: formulario HTML dinamico

Hola amigo, bueno verás el manejo del JS dentro de las etiquetas HTML estan incorrectas para la funcion que hemos creado, sin embargo si modificamos un poco el script entonces la forma en la que ejecutas la funcion sería correcta.

Pasemos a ver como lo modificaremos.

Primero tenemos la siguiente funcion:
Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.   function showOptions(s,h){
  3.         document.getElementById(s).style.display = 'block';
  4.         document.getElementById(h).style.display = 'none';
  5.   }
  6. </script>

En la linea 2 podemos agregar tantas letras queramos en el parentecis, (cada una que corresponda al nombre de cada etiqueta que querramos mostrar u ocultar)

ejemplo.

a: La etiqueta que mostraras
b: las etiquetas ocultas
c: las etiquetas ocultas
d: las etiquetas ocultas

Por lo tanto podemos modificar esta linea de la sig manera:

Código Javascript:
Ver original
  1. function showOptions(a,b,c,d){

Y por ultimo hay que programar la funcion, pasemos a decir que etiquetas se muestra mientras cuales se deben ocultar, esto lo haremos de la sig manera.

Código Javascript:
Ver original
  1. document.getElementById(a).style.display = 'block';
  2. document.getElementById(b).style.display = 'none';
  3. document.getElementById(c).style.display = 'none';
  4. document.getElementById(d).style.display = 'none';

Por lo tanto el código completo quedaría de la sig manera

Código HTML:
Ver original
  1. <fieldset><legend>Tipo de Punto de Interés:</legend>
  2.    
  3.    
  4.     <script language="javascript" type="text/javascript">
  5.  
  6.         function showOptions(a,b,c,d){
  7.    
  8.               document.getElementById(a).style.display = 'block';
  9.    
  10.               document.getElementById(b).style.display = 'none';
  11.               document.getElementById(c).style.display = 'none';
  12.               document.getElementById(d).style.display = 'none';
  13.  
  14.         }
  15.  
  16.       </script>
  17.  
  18.       </head>
  19.  
  20.       <body>
  21.  
  22.       <form action="routing.php" method="post">
  23.  
  24.             <select>
  25.  
  26.              <option onclick="showOptions('restaurante','hotel','pub','bar');">Restaurante</option>
  27.  
  28.              <option onclick="showOptions('hotel','pub','restaurante','bar',);">Hotel</option>
  29.  
  30.          <option onclick="showOptions('bar','hotel','pub','restaurante');">Bar</option>
  31.  
  32.          <option onclick="showOptions('pub','restaurante','hotel','bar');">Pub</option>
  33.  
  34.             </select>
  35.  
  36.             <div id="hotel" style="display:none;">
  37.          
  38.     <INPUT type="hidden" NAME="tipo" value="hotel">
  39.     <INPUT TYPE="CHECKBOX" NAME="B&B" value="B&B">Bed&Breakfast<BR>
  40.     <INPUT TYPE="CHECKBOX" NAME="Parking" value="Parking">Parking privado<BR>
  41.     <INPUT TYPE="CHECKBOX" NAME="Wifi" value="Wifi">Wifi<BR>
  42.     <INPUT TYPE="CHECKBOX" NAME="Piscina" value="Piscina">Piscina<BR>
  43.     <INPUT TYPE="CHECKBOX" NAME="Animacion" value="Animacion">Servicio de Animacion<BR>
  44.  
  45.            </div>
  46.  
  47.            <div id="restaurante" style="display:none;">
  48.  
  49.     <INPUT TYPE="hidden" NAME="tipo" value="restaurante">
  50.     <INPUT TYPE="CHECKBOX" NAME="ServicioDomicilio" value="ServicioDomicilio">Servicio a domicilio<BR>
  51.     <INPUT TYPE="CHECKBOX" NAME="PPV" value="PPV">PPV<BR>
  52.     <INPUT TYPE="CHECKBOX" NAME="Parkingprivado" value="Parkingprivado">Parking privado<BR>
  53.         <INPUT TYPE="CHECKBOX" NAME="Menuinfantil" value="Menuinfantil">Menu infantil<BR>
  54.     <INPUT TYPE="CHECKBOX" NAME="Menuvegetariano" value="Menuvegetariano">Menu vegetariano<BR>
  55.     <INPUT TYPE="CHECKBOX" NAME="Bodas" value="Bodas">Salon especial para bodas<BR>
  56.  
  57.            </div>
  58.  
  59.     <div id="bar" style="display:none;">
  60.  
  61.     <INPUT TYPE="hidden" NAME="tipo" value="bar">
  62.     <INPUT TYPE="CHECKBOX" NAME="ServicioDomicilio" value="ServicioDomicilio">Servicio a domicilio<BR>
  63.     <INPUT TYPE="CHECKBOX" NAME="PPV" value="PPV">PPV<BR>
  64.     <INPUT TYPE="CHECKBOX" NAME="Parkingprivado" value="Parkingprivado">Parking privado<BR>
  65.         <INPUT TYPE="CHECKBOX" NAME="Menudia" value="Menudia">Menu del dia<BR>
  66.     <INPUT TYPE="CHECKBOX" NAME="Sidreria" value="Sidreria">Sidreria<BR>
  67.     <INPUT TYPE="CHECKBOX" NAME="TakeAway" value="TakeAway">Menus para llevar<BR>
  68.  
  69.            </div>
  70.  
  71.  
  72.     <div id="pub" style="display:none;">
  73.  
  74.     <INPUT TYPE="hidden" NAME="tipo" value="pub">
  75.     <INPUT TYPE="CHECKBOX" NAME="billar" value="billar">Billar<BR>
  76.     <INPUT TYPE="CHECKBOX" NAME="Pistabaile" value="Pistabaile">Pista de baile<BR>
  77.     <INPUT TYPE="CHECKBOX" NAME="cocteles" value="cocteles">Carta de cocteles<BR>
  78.         <INPUT TYPE="CHECKBOX" NAME="chupitos" value="chupitos">Carta de chupitos<BR>
  79.     <INPUT TYPE="CHECKBOX" NAME="karaoke" value="karaoke">karaoke<BR>
  80.  
  81.            </div>
  82.  
  83.    
  84.  
  85.     </fieldset>

Espero que se entienda.

Saludos amigo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #13 (permalink)  
Antiguo 02/06/2010, 16:51
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años
Puntos: 0
Respuesta: formulario HTML dinamico

Se entiende perfectamente.
Muchas gracias

Etiquetas: dinamico, html, 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 03:21.