Identificarte

Versión Completa : creacion tablas dinámicas javascript


Sponsored links
.




dNxEtOr
octubre 24, 2005, 08:30
hola, tengo el sigte inconveniente: estoy generando una pantalla de busquedas, para lo cual utilizo un select que trae los campos de las tablas, un select que tiene los operadores y un input para el valor de comparacion, esta fila puede repetirse n veces pues son todas las condiciones where que debe tener determinado join, el problema es qeu cuando trabajo en mozilla me genera nuevas filas con las opciones, sin embargo no esta haciendo la asociacion a la tabla, no asocia los nuevos elementos a la forma, asi sean vistos en la pantalla... alguien sabe como puedo generar elementos dinamicamente y que sean asignados a la forma ??? gracias

juan.hoyos
octubre 24, 2005, 12:39
Hola dNxEtOr, podrías poner el código HTML + javascript acá?
Así entenderíamos mejor y podríamos llegar a la solución más rápidamente.

PD:Recuerde ponerlo entre etiquetas CODE para verlo mejor.

dNxEtOr
octubre 26, 2005, 09:56
Este es el código del HTML donde se arman los campos...

<table border="0" id="base" width="100%">
<tr class="celda">
<td colspan="3">Adicionar o Remover campos por criterio</td>
<td>
<input type="button" class="boton" value="[+]" onClick="addNewRow(event)" alt="Adicionar">&nbsp;
<input type="button" class="boton" value="[-]" onClick="removeLastRow(event)" alt="Remover">
</td>
</tr>
<tr id="example" class="celda">
<td>
<select class="combo" name="fields[]" id="field">
<option value="{$source}.{$campNomb}">{$source}.{$campNomb}</option>
</select>
</td>
<td>
<select class="combo" name="operator[]" id="opera">
<option value="=">=</option>
<option value="<>"><></option>
<option value=">">></option>
<option value="<"><</option>
<option value=">=">>=</option>
<option value="<="><=</option>
<option value="in">in</option>
<option value="notin">not in</option>
<option value="like">like</option>
</select>
</td>
<td>
<input name="values[]" type="text" size="50" id="value">
<input type="hidden" name="btnAction" value="next">
</td>
<td>&nbsp;</td>
</tr>
</table>


Las funciones javascript son

function addNewRow(){
var TABLE = document.getElementById("base");
var TROW = document.getElementById("example");

var content = TROW.getElementsByTagName("td");
var newRow = TABLE.insertRow(-1);
newRow.className = TROW.attributes['class'].value;
insertLOselect(content,newRow);

var newRow2 = TABLE.insertRow(-1);
newRow2.className = TROW.attributes['class'].value;
//window.alert(content);
copyRow(content,newRow2);
}
function removeLastRow() {
var TABLE = document.getElementById("base");
if(TABLE.rows.length > 2) {
TABLE.deleteRow(TABLE.rows.length-1);
TABLE.deleteRow(TABLE.rows.length-1);
}
}

function appendCell(Trow, txt) {
var newCell = Trow.insertCell(Trow.cells.length)
newCell.innerHTML = txt
}

function copyRow(content,Trow) {
var cnt = 0;
for (; cnt < content.length; cnt++) {
appendCell(Trow, content[cnt].innerHTML);
}
}

function insertLOselect(content,Trow) {
var cnt = 0;
for (; cnt < content.length-1; cnt++) {
appendCell(Trow, '&nbsp;');
}
str = '<td>';
str += ' <select id="LO" class="combo" name="logical[]">';
str += ' <option value="and">and</option>';
str += ' <option value="or">or</option>';
str += ' </select>';
str += '</td>';
appendCell(Trow,str);
}


Agradezco la ayuda que me puedan brindar, estos archivos me permiten trabajar bien en ie pues alli si logro clonar la celda, sinembargo en mozilla me crea la fila pero no la clona, y ademas no la incluye como elemento de la forma,

Gracias...

juan.hoyos
octubre 28, 2005, 12:09
Estuve revisando el código y lo probé sobre Mozilla Firefox 1.0.7, lo siguiente fue lo que encontré:

Las funciones de JS trabajan básicamente muy bien: agregan y quitan filas. Sobre IE también trabajan.
Las funciones de JS si asocian las nuevas filas al form y para la muestra el siguiente código generado luego de agregar una fila:

<form name="form1" method="get" action="action.html">
<table id="base" border="0" width="100%">
<tbody>
<tr class="celda">
<td colspan="3">Adicionar o Remover campos por criterio</td>
<td>
<input class="boton" value="[+]" onclick="addNewRow(event)" alt="Adicionar" type="button">&nbsp;

<input class="boton" value="[-]" onclick="removeLastRow(event)" alt="Remover" type="button">
</td>
</tr>
<tr id="example" class="celda">
<td>
<select class="combo" name="fields" id="field">
<option value="Perro">Perro</option>
<option value="Gato">Gato</option>
</select>
</td>
<td>
<select class="combo" name="operator" id="opera">
<option value="=">=</option>
<option value="&lt;&gt;">&lt;&gt;</option>
<option value="&gt;">&gt;</option>
<option value="&lt;">&lt;</option>
<option value="&gt;=">&gt;=</option>
<option value="&lt;=">&lt;=</option>
<option value="in">in</option>
<option value="notin">not in</option>
<option value="like">like</option>
</select>
</td>
<td>
<input name="values" size="50" id="value" type="text">
<input name="btnAction" value="next" type="hidden">
</td>

<td>&nbsp;</td>
</tr>
<tr>
<td>
<input value="Click and See" type="submit">
</td>
</tr>
<tr class="celda">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>
<td>
<select id="LO" class="combo" name="logical[]">
<option value="and">and</option>
<option value="or">or</option>
</select>
</td>
</td>
</tr>
<tr class="celda">
<td>
<select class="combo" name="fields" id="field">
<option value="Perro">Perro</option>
<option value="Gato">Gato</option>
</select>
</td>
<td>
<select class="combo" name="operator" id="opera">
<option value="=">=</option>
<option value="&lt;&gt;">&lt;&gt;</option>
<option value="&gt;">&gt;</option>
<option value="&lt;">&lt;</option>
<option value="&gt;=">&gt;=</option>
<option value="&lt;=">&lt;=</option>
<option value="in">in</option>
<option value="notin">not in</option>
<option value="like">like</option>
</select>

</td>
<td>
<input name="values" size="50" id="value" type="text">
<input name="btnAction" value="next" type="hidden">
</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</form>

Esa asociación se comprueba enviando los datos del form a través del botón Click and See por medio del método GET, este es el resultado que también se observa en la barra de direcciones:
http://www.laneros.com/attachment.php?attachmentid=26605&stc=1&d=1129621079

Espero sirva para aclarar el problema que tenías. Yo la verdad no encontré ninguno del que mencionas, pero si me deja pensando algo: Cuando se están generando filas nuevas, los nombres e id´s de los select y los inputs es el mismo, creo que esto puede llevar a problemas al capturarlos en la página que los procese. Por lo general he entendido que un id y un nombre debería ser único dentro de un conjunto de elementos HTML (No aplica para los option dentro de los select).

Los siguientes fueron los archivos que utilicé para pasar las variables y visualizar las variables: