Avoid insertion in dynamic table

0

I have a dynamic table for the checks that are delivered as payment, as you will see the data does not come from the bd. Then I have an add button that adds a record to the table, inside the same record a confirmation button appears:

$("#agregarc").click(function(){
  
    var datoscheque='<tr><td><div>'+
    '<select id="bancos"><option value"=0">Seleccione<option></select></div></td>'+
    '<td><input type="text" class="form-control" id="nrocuenta" placeholder="CtaBancaria"/>'
    +'</td>'+
    
    '<td><input type="text"class="form-control" id="titular" placeholder="Titular"/></td>'+
  +'<div>'+'<td><input type="text" class="form-control" id="CUIT" placeholder="CUIT"/></td>'+
  '<td><input type="text"class="form-control" id="Importe" placeholder="Son pesos"/></td>'
    +
    '<td><input type="date" class="form-control" id="fechacobro"placeholder="Deposito el:"/></td>'+
 
    '<td><button id="acreditar" class="btn btn-primary"><span id="acreditar" class="glyphicon glyphicon-ok"></span></button></td><td></td></tr>';

$(datoscheque).appendTo("#cheques");
    listarbancos(); 


  
  $("#acreditar").click(function(){
	 
    var Banco=$("#bancos").val();
    var Importe=$("#Importe").val();

    var nroCuenta=$("#nrocuenta").val();
    var titular=$("#titular").val();
    var fechacobro=$("#fechacobro").val();
    var CUIT=33;
    var cobrado=0;
    var d = new Date();
    var fecharecibo=d.getFullYear() + "-" + (d.getMonth()+1) + "-" + d.getDate();
   
    
     $.ajax({
                                                        type: "POST",
                                                        url: "//localhost/gestionweb/includes/php/ingresacheque.php",
                                                        data: { "idbanco":Banco,"idc":idcliente,"num":nroCuenta,"fechar":fecharecibo,"fechac":fechacobro,"importe":Importe,"titular":titular,"cuenta":nroCuenta,"cobrado":cobrado,"CUIT":CUIT},
                                                   
                                            
                                                        error: function(){
                                                            alert("error petición ajax");
                                                           
                                                        },
                                                        
                                                        success: function(data){
                                                         
                                                            console.log(data); 
   

      
    
    var Bancot=$("#bancos").find('option:selected').text();
    var nroCuenta=$("#nrocuenta").val();
    var titular=$("#titular").val();
    var fechacobro=$("#fechacobro").val();
    var cuit=$("#CUIT").val();
    var importe=$("#Importe").val();
 
    $("#cheques tbody tr:last td:eq(0)").html(Bancot);
    $("#cheques tbody tr:last td:eq(1)").html(nroCuenta);
    $("#cheques tbody tr:last td:eq(2)").html(titular);
    $("#cheques tbody tr:last td:eq(3)").html(cuit);
    $("#cheques tbody tr:last td:eq(4)").html(importe);
    $("#cheques tbody tr:last td:eq(5)").html(fechacobro);
 $("#cheques tbody tr:last td:eq(6)").html('<td><button class="btn btn-primary "><span class="glyphicon glyphicon-pencil"></span></button></td><td>'+
'<button class="eliminar"><span class="glyphicon glyphicon-trash"></span></button></td><td>');

  $(".eliminar").on("click",function(){
   
    $(this).parents("tr").remove();


});
                                                                }
                                                        
                                                    });
    $("#cheques").val(Importe);
});
});

What I want is to prevent a record from being added if the previous one was not confirmed.

    
asked by Caruso 18.10.2018 в 13:15
source

1 answer

0

According to you, you only want to add a new row if the last record that you added dynamically to the table was accredited. To know if you can add a new one based on this criterion, there may be 2 cases, that your table does not have records yet or that you have already accredited, so the last cell of your last row will not contain the button with the% id% of% that you modify your html Knowing this you can modify your code and make it look like this:

$("#agregarc").click(function(){
  
    var datoscheque='<tr><td><div>'+
    '<select id="bancos"><option value"=0">Seleccione<option></select></div></td>'+
    '<td><input type="text" class="form-control" id="nrocuenta" placeholder="CtaBancaria"/>'
    +'</td>'+
    
    '<td><input type="text"class="form-control" id="titular" placeholder="Titular"/></td>'+
  +'<div>'+'<td><input type="text" class="form-control" id="CUIT" placeholder="CUIT"/></td>'+
  '<td><input type="text"class="form-control" id="Importe" placeholder="Son pesos"/></td>'
    +
    '<td><input type="date" class="form-control" id="fechacobro"placeholder="Deposito el:"/></td>'+
 
    '<td><button id="acreditar" class="btn btn-primary"><span id="acreditar" class="glyphicon glyphicon-ok"></span></button></td><td></td></tr>';

    var acreditado = ($("#cheques tbody tr:last").find('button#acreditar').length === 0 || $("#cheques tbody tr").length === 0);
    if(acreditado){
       $(datoscheque).appendTo("#cheques");
       listarbancos(); 
    }

  $("#acreditar").click(function(){
	 
    var Banco=$("#bancos").val();
    var Importe=$("#Importe").val();

    var nroCuenta=$("#nrocuenta").val();
    var titular=$("#titular").val();
    var fechacobro=$("#fechacobro").val();
    var CUIT=33;
    var cobrado=0;
    var d = new Date();
    var fecharecibo=d.getFullYear() + "-" + (d.getMonth()+1) + "-" + d.getDate();
   
    
     $.ajax({
                                                        type: "POST",
                                                        url: "//localhost/gestionweb/includes/php/ingresacheque.php",
                                                        data: { "idbanco":Banco,"idc":idcliente,"num":nroCuenta,"fechar":fecharecibo,"fechac":fechacobro,"importe":Importe,"titular":titular,"cuenta":nroCuenta,"cobrado":cobrado,"CUIT":CUIT},
                                                   
                                            
                                                        error: function(){
                                                            alert("error petición ajax");
                                                           
                                                        },
                                                        
                                                        success: function(data){
                                                         
                                                            console.log(data); 
   

      
    
    var Bancot=$("#bancos").find('option:selected').text();
    var nroCuenta=$("#nrocuenta").val();
    var titular=$("#titular").val();
    var fechacobro=$("#fechacobro").val();
    var cuit=$("#CUIT").val();
    var importe=$("#Importe").val();
 
    $("#cheques tbody tr:last td:eq(0)").html(Bancot);
    $("#cheques tbody tr:last td:eq(1)").html(nroCuenta);
    $("#cheques tbody tr:last td:eq(2)").html(titular);
    $("#cheques tbody tr:last td:eq(3)").html(cuit);
    $("#cheques tbody tr:last td:eq(4)").html(importe);
    $("#cheques tbody tr:last td:eq(5)").html(fechacobro);
 $("#cheques tbody tr:last td:eq(6)").html('<td><button class="btn btn-primary "><span class="glyphicon glyphicon-pencil"></span></button></td><td>'+
'<button class="eliminar"><span class="glyphicon glyphicon-trash"></span></button></td><td>');

  $(".eliminar").on("click",function(){
   
    $(this).parents("tr").remove();


});
                                                                }
                                                        
                                                    });
    $("#cheques").val(Importe);
});
});
    
answered by 18.10.2018 / 20:20
source