Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   Formulario dinámico (http://www.forosdelweb.com/f127/formulario-dinamico-554494/)

lfc 05/02/2008 06:31

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!

ZiTAL 05/02/2008 08:31

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


La zona horaria es GMT -6. Ahora son las 21:49.

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