Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Formulario dinámico

Estas en el tema de Formulario dinámico en el foro de Frameworks JS en Foros del Web. Hola, Tengo un formulario creado con Struts2 (la parte estática del formulario, siempre está) y con Ajax y javascript (la parte dinámica, el formulario va ...
  #1 (permalink)  
Antiguo 05/02/2008, 06:31
lfc
 
Fecha de Ingreso: febrero-2008
Mensajes: 23
Antigüedad: 16 años, 2 meses
Puntos: 0
Desacuerdo Formulario dinámico

Hola,

Tengo un formulario creado con Struts2 (la parte estática del formulario, siempre está) y con Ajax y javascript (la parte dinámica, el formulario va agregando elementos en función de lo que el usuario le va introduciendo). Y hasta aquí bien.

El problema es cuando tengo que hacer el submit del formulario, enviar los datos al servidor. No sé como enviar estos datos, porque con javascript se hace mediante el XMLHttpRequest y en cambio con Struts2 mediante una Action (la cuál tiene los mismos atributos que todos los campos del formulario).

Os pongo un trozo del código:

Código:
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

	<head>
		<title>ARS - Is Available Form</title>
		<s:head theme = "ajax"/>
		<link href="<s:url value="/css/mainstyle.css"/>" rel="stylesheet" type="text/css"/>
		<link rel="STYLESHEET" type="text/css" href="rich_calendar/rich_calendar.css">
		<script language="JavaScript" type="text/javascript" src="rich_calendar/rich_calendar.js"></script>
		<script language="JavaScript" type="text/javascript" src="rich_calendar/rc_lang_en.js"></script>
				 
		<script language="javascript" type="text/javascript">
			// on click -> disable/enable the jobID textfield
			function insertJobID()
			{
				if (document.formreservation.jid.disabled == true)
				{
					document.formreservation.jid.disabled = false
				}
				else
				{
					document.formreservation.jid.disabled = true
				}
			}
			
			// onkeyup -> create a DIV for each service
			function addDivsServices(event)
			{
				divservices = document.createElement('div');
				divservices.id = 'divservices';
				divservices.style.border = "solid #00bfff 3px";
				divservices.style.padding = "5px";
				(document.getElementById('formreservation')).appendChild(divservices);
					
				for(i = 0; i < numS; i++) 
				{							
					//THE DIV OF THE SERVICE -> name: 'divservice' + i
					divservice = document.createElement('div');
					divservice.id = 'divservice' + i;
					divservice.style.border = "solid #00cd00 3px";
					divservice.style.padding = "5px";
					divservice.appendChild(document.createElement('br'));
					
					//SERVICE ID
					txt = document.createTextNode('Service ID: ');
					serviceid = document.createElement('input');
				    serviceid.name = 'serviceid' + i;
				    divservice.appendChild(txt);
				    divservice.appendChild(serviceid);
				    
				    //SPACE
				    space = document.createTextNode("\u00a0");
				    divservice.appendChild(space);
					
					//COMBOBOX TYPE OF RESERVATION
					txt = document.createTextNode('Type of Reservation: ');
					cbx = document.createElement('select');
					cbx.name = 'tor' + i;
					
					opt = document.createElement('option');
					opt.value = '1';
					opt.text =  '1';
					cbx.appendChild(opt);
					
					opt = document.createElement('option');                     
					opt.value = '2';
					opt.text =  '2';
					cbx.appendChild(opt);
					
					opt = document.createElement('option');                     
					opt.value = '3';
					opt.text =  '3';
					cbx.appendChild(opt);
					cbx.onchange = addReservationConstraints;
									
					divservice.appendChild(txt);
					divservice.appendChild(cbx);
					
					//NEW LINE
					divservice.appendChild(document.createElement('br'));
					divservice.appendChild(document.createElement('br'));
					
					[...]	
				}
			}
			
			[...]
		</script>
	</head>
	
	<body>
		<h1> Is Available </h1>
		<br>
		<s:form name = "formreservation" id = "formreservation" action = "isAvailable" method = "POST">
			<s:checkbox label = "Is a PRE reservation? " name = "ispre" value = "false" onclick = "insertJobID()"/><br>
			<s:textfield name = "jid" label = "Job ID" disabled = "true"/><br>
			<s:textfield name = "numservices" label = "Number of services" onkeyup = "addDivsServices(event)"/><br>
			<s:submit value = "Submit" align = "center"/>			
		</s:form>
	</body>
</html>
Alguna idea? Es que he buscado en todas partes y ya no sé que hacer... necesito los struts2 porque la aplicación web que estoy desarrollando está basada en struts2, y también necesito ajax con javascript para poder generar ese formulario incremental (dinámico, variable... lo que sea...) ...

Cualquier ayuda me servirá... Muchas gracias!
  #2 (permalink)  
Antiguo 05/02/2008, 08:31
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: Formulario dinámico

Cual es tu problema, que no sabes cual elegir el action o el xmlhttprequest o que no te funciona ninguno de los 2?

Por comentar, he leido que generar el formulario dinamicamente mediante ajax, no suele dar buenos resultados a no ser que generes los campos mediante javascript, vamos que no es lo mismo hacer un innerHTML de un porron de codigo que crearlos mediante document.createelement.

Ya nos contaras
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
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 01:04.