JavaScript - Añadir campo nuevo a tabla

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 329 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Añadir campo nuevo a tabla

Publicado por Gonzalo (2 intervenciones) el 15/06/2021 12:24:47
Buenos dias!

Tengo un problema a la hora de añadir un campo nuevo a una tabla que esta creada con javascript. Tengo muy poco conocimiento en java por lo que no entiendo muy bien como hacen para que se vayan añadiendo los campos linealmente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function crearfila(){
  var filaactual = window.filaactual;
  var fila = document.getElementById('tablappal').insertRow(-1);
  fila.id = "fila"+filaactual;
  var t="";
  t += "<td bgcolor='#ffffff'><select name=\"fam"+filaactual+"\" id=\"fam"+filaactual+"\" size=\"1\" disabled=\"true\">"+familiastexto+"</select></td>";
  t += "<td bgcolor='#ffffff'><select name=\"subfam"+filaactual+"\" id=\"subfam"+filaactual+"\" size=\"1\"><option value=>Subfamilia</option></select></td>";
  t += "<td bgcolor='#ffffff'><select name=\"marca"+filaactual+"\" id=\"marca"+filaactual+"\" size=\"1\"><option value=>Marca</option></select></td>";
  t += "<td bgcolor='#ffffff'><select name=\"prod"+filaactual+"\" id=\"prod"+filaactual+"\" size=\"1\"><option value=>Producto</option></select></td>";
  //t += "<td bgcolor='#ffffff' id=\"ref"+filaactual+"\"></td>";
  //t += "<td bgcolor='#ffffff' id=\"emb"+filaactual+"\"></td>";
  t += "<td bgcolor='#ffffff'><input id=\"cant"+filaactual+"\" type=\"number\" name=\"cant"+filaactual+"\" step=\"1\" disabled=\"true\" style=\"text-align: center; width: 50px\"></td>";
  //t += "<td bgcolor='#ffffff' id=\"caj"+filaactual+"\"></td>";
  t += "<td bgcolor='#ffffff' id=\"pvp"+filaactual+"\"></td>";
  t += "<td><button type=\"button\" id=\"borrar"+filaactual+"\" onclick=\"eliminarfila("+filaactual+");\" style='border:none;background-color: transparent'><img src='../botones/borrar.png' class='img-responsive' alt='Borrar producto' width='24'></button></td>";
  fila.innerHTML = t;
 
document.getElementById('fam'+filaactual).onchange = function(){
    deshabilitar(filaactual);
    var select = document.getElementById("marca"+filaactual);
    var length = select.options.length;
    for (i = 0; i < length; i++) select.options[i] = null;
      var data = "";
    $.ajax({
      type: 'GET',
      url: 'filtro_promociones.php?o=f1&fam='+$( "#fam"+filaactual ).val(),
      data: data,
      success: function(data, textStatus, jqXHR)
      {
        var t = "<option value=>Marca</option>";
        var marcas = jQuery.parseJSON("["+data+"]");
        for(var i=0; i<marcas[0].length; i++){
          t += "<option value="+marcas[0][i]+">"+marcas[0][i]+"</option>";
        }
        document.getElementById("marca"+filaactual).innerHTML = t;
        document.getElementById("prod"+filaactual).innerHTML = "<option value=>Producto                    </option>";
        $("#prod"+filaactual).change();
      }});
};
deshabilitar(filaactual);
document.getElementById('marca'+filaactual).onchange = function(){
    deshabilitar(filaactual);
    var select = document.getElementById("prod"+filaactual);
    var length = select.options.length;
    for (i = 0; i < length; i++) select.options[i] = null;
      var data = "";
    $.ajax({
      type: 'GET',
      url: 'filtro_promociones.php?o=f2&fam='+$( "#fam"+filaactual ).val()+'&marca='+$( "#marca"+filaactual ).val(),
      data: data,
      success: function(data, textStatus, jqXHR)
      {
        var t = "<option value=>Producto</option>";
        var productos = jQuery.parseJSON("["+data+"]");
        for(var i=0; i<productos[0].length; i++){
          t += "<option value="+productos[0][i][0]+">"+productos[0][i][1]+"</option>";
        }
        document.getElementById("prod"+filaactual).innerHTML = t;
        $("#prod"+filaactual).change();
      }});
};
document.getElementById('prod'+filaactual).onchange = function(){
    deshabilitar(filaactual);
    var data = "";
    $.ajax({
      type: 'GET',
      url: 'filtro_promociones.php?o=f3&prod='+$( "#prod"+filaactual ).val(),
      data: data,
      success: function(data, textStatus, jqXHR)
      {
        producto[filaactual] = jQuery.parseJSON(data);
        //document.getElementById("ref"+filaactual).innerHTML = producto[filaactual]["ref"];
        document.getElementById("pvp"+filaactual).innerHTML = parseFloat(producto[filaactual]["pvp"]).toFixed(2);
        //document.getElementById("emb"+filaactual).innerHTML = producto[filaactual]["caja"];
        habilitar(filaactual);
      }});
};
document.getElementById('cant'+filaactual).onchange = function(){
    if($( "#cant"+filaactual ).val()=="") $( "#cant"+filaactual ).val(producto[filaactual]["caja"]);
    //document.getElementById("caj"+filaactual).innerHTML = (parseInt($( "#cant"+filaactual ).val())/parseInt(producto[filaactual]["caja"])).toFixed(2);
    cambiartotal(filaactual);
  };
  habilitarselects(filaactual);
  window.filaactual++;
}

Esto es el html de la tabla
1
2
3
4
5
6
7
8
9
10
11
<table class="table table-bordered" align="center" width="100%" style="text-align: center" id="tablappal" name="tablappal">
    <tr style="color:white">
        <th style="text-align:center; vertical-align:middle" bgcolor="#2c3e50" width="10%">FAMILIA</th>
        <th style="text-align:center; vertical-align:middle" bgcolor="#2c3e50" width="10%">SUBFAMILIA</th>
        <th style="text-align:center; vertical-align:middle" bgcolor="#2c3e50" width="10%">MARCA</th>
        <th style="text-align:center; vertical-align:middle" bgcolor="#2c3e50" width="40%">PRODUCTO</th>
        <th style="text-align:center; vertical-align:middle" bgcolor="#2c3e50" width="20%">CANTIDAD</th>
        <th style="text-align:center; vertical-align:middle" bgcolor="#2c3e50" width="10%">PVP</th>
        <th style="text-align:center; vertical-align:middle" width="5%"></th>
    </tr>
</table>

Mi duda es, quiero añadir una nueva línea que se llame subfamilia (el campo en BBDD se llama "subfam").

Captura

Como podéis ver, en la tabla cuando elijo la familia, se activa el campo marca y cuando escojo una opción del campo "marca", se activa la celda "producto", pero hasta que no elijo una opción no se activa la siguiente celda.

En este momento, tengo en el HTML el campo SUBFAMILIA puesto, pero no me muestra nada cuando selecciono una familia.

Como podría añadir ese campo en el Javascript?

Saludos y gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder