Crear elementos XHTML dinámicamente con JScript
Requisitos previos :
- Conocimientos básicos de html (formas xhtml) y JScript
Un webform en una página Web sirve para transmitir información hacia un servidor. Su uso principal capturar información para su posterior procesaminto. Los webform más comunes son: input text, checkbox, select e input button.
En esta oportunidad se explicaré como se pueden crear estos elementos de manera dinámica utilizando para ello JScript.
La idea general será la siguiente:
Tenemos una tabla con los siguientes elementos: un input text, un checkbox y un textarea. Los tres elementos se encuentran en un mismo “tr” (fila) cada uno separado por la etiqueta “td”. Por el momento tenemos una tabla con una fila y tres columnas. Además tendremos un botón al que llamaremos “agregar” que se encargará de llamar a la función que replicará la fila.
Este es código de nuestra tabla:
<table width=”100%” border=”0″>
<tbody id=”tabla1″>
<tr>
<td><input name=”texto” type=”text”></td>
<td><input name=”masculino” type=”checkbox” value=”masculino”>
<input name=”femenino” type=”checkbox” value=”femenino”>
</td>
<td><textarea name=”Area” cols=”20″ rows=”2″></textarea></td>
</tr>
</tbody>
</table>
Dentro del tbody se añadirá una nueva línea con los webforms que vamos a generar de manera dinámica. A continuación el código que nos ayudará a generar la nueva línea.
<table>
<tbody id=”tabla2″>
<input name=”boton” type=”button” value=”agregar” onclick=”javascript:Nuevalinea();”>
</tbody>
</table>
Por último la función JScript:
<script language=”JavaScript”>
/*
Nombre: Agregar elementos XHTML dinámicamente
Parámetros:
-
Autor: Willy Peitzner R.
E-mail: wpeitzner@gmail.com
Fecha: 2007-12-10
*/
function Nuevalinea()
{
var objTBody = document.getElementById(“tabla1″);//tbody
var objFila = document.createElement(“tr”);//fila
var objCelda; //celda
var objDatos; //webforms que se ubicacran en cada celda
objCelda = document.createElement(“<td align=’center’>”);
objDatos = document.createElement(“<input type=’text’ id=’texto’ name=’texto’ maxlength=’10′ size=’8′ value=’1′>”);
objCelda.appendChild(objDatos); //agrega información a la celda
objFila.appendChild(objCelda); //agrega la celda a la fila
objCelda = document.createElement(“<td align=’center’>”);
objDatos = document.createElement(“<input type=’checkbox’ name=’genero’ value=’masculino’>”);
objCelda.appendChild(objDatos); //agrega información a la celda
objDatos = document.createElement(“<input type=’checkbox’ name=’genero’ value=’femenino’>”);
objCelda.appendChild(objDatos); //agrega información a la celda
objFila.appendChild(objCelda); //agrega la celda a la fila
objCelda = document.createElement(“<td align=’center’>”);
objDatos = document.createElement(“<textarea type=’text’ id=’area’ name=’AreaTexto’ cols=’20′ rows=’1′>”);
objCelda.appendChild(objDatos); //agrega información a la celda
objFila.appendChild(objCelda); //agrega la celda a la fila
objTBody.appendChild(objFila);//agrega la nueva fila a la tabla
}
</script>
Más adelante te explicaré como agregar elementos tipo “select”. Por lo pronto es todo.
Tags: JScript
You can comment below, or link to this permanent URL from your own site.
Agosto 13, 2009 at 10:58 pm
me gusto, es lo que buscaba. gracias
Bueno, aun me falta la conexion..porque de ahi tengo que guardarlos a una base de datos…
=S
alguna ayuda=???
Agosto 18, 2009 at 3:01 am
como sugerencia, una de las maneras que he utilizado para guardar la información en una base de datos es utilizando una etiqueta tipo hidden. Al darle submit a la forma obtengo el valor de todos los elementos generados dinámicamente y le doy el valor a la etiqueta hidden.
Algunas recomendaciones a tomar en cuenta son las siguientes:
a) Cada atributo generado dinámicamente tiene que tener un nombre estandar… por ejemplo etiqueta1, etiqueta2, etiqueta3
esto te ayudará a saber exactamente cuantos elementos creaste dinàmicamente.
b) Al darle el submit a la forma forzosamente deberemos de construir una cadena con todos los valores de los elementos generados dinámicamente. Para separarlos puedes utilizar un conjunto de caracteres que serìa improbable encontrar por ejemplo:
@@ , #_ , !@, etc. Ejemplo:
texto_campo_1 @@ texto_campo_2@@ texto_campo_3
c) Construida la cadena la colocas en la variable tipo hidden, importante indicar que es necesario validar que no vayan campos vacíos.
d) Al llegar a la otra página (Luego de hacer el submit) puedes utilizar alguna función paracida a “split” para separar individualmente los valores ( si lo necesitas) o bien guardarlos en un solo registro en tu base de datos.
Saludos,
Agosto 18, 2009 at 3:09 am
Ahora bien, para recuperar la información de la B.D. y presentarla bastará con crear una rutina en el evento onLoad de la etiqueta BODY. Como ya cuentas con la rutina bastará con hacer la llamada desde este evento.
Por ejemplo el evento debería de existir algo como esto…
function Cargar()
{
document.getElementById(‘primer_campo’).value=’texto campo1′;
dinamicamente(‘texto campo2′);
dinamicamente(‘texto campo3′);
.
.
.
dinamicamente(‘texto campoN’);
}