Kod
function add_item(id) {
var cnt_str = $("#edit_items_" + id + " button:last").val();
if(typeof cnt_str === 'undefined'){
var cnt_str = "0";
}
var cnt = parseInt(cnt_str, 10);
++cnt;
var mySecondDiv = '<div class="form-row" id="item_' + id + "_" + cnt + '">';
mySecondDiv = mySecondDiv + '<div class="form-group col-md-7" id="item_select_' + cnt + '">';
mySecondDiv = mySecondDiv + '</div>';
mySecondDiv = mySecondDiv + '<div class="form-group col-md-4">';
mySecondDiv = mySecondDiv + '<input type="number" class="form-control" name="items_quantity[]" placeholder="Ilość" required>';
mySecondDiv = mySecondDiv + '</div>';
mySecondDiv = mySecondDiv + '<div class="form-group col-md-1">';
mySecondDiv = mySecondDiv + '<button type="button" class="btn btn-danger" onclick="delete_item(' + id + ', ' + cnt + ')" value="' + cnt + '" id="delete_item">Usuń</button>';
mySecondDiv = mySecondDiv + '</div>';
mySecondDiv = mySecondDiv + '</div>';
$("#edit_items_" + id).append(mySecondDiv);
$("#items_select").clone().appendTo("#item_select_" + cnt);
};
function delete_item(id, item) {
$("#item_" + id + "_" + item).remove();
};
var cnt_str = $("#edit_items_" + id + " button:last").val();
if(typeof cnt_str === 'undefined'){
var cnt_str = "0";
}
var cnt = parseInt(cnt_str, 10);
++cnt;
var mySecondDiv = '<div class="form-row" id="item_' + id + "_" + cnt + '">';
mySecondDiv = mySecondDiv + '<div class="form-group col-md-7" id="item_select_' + cnt + '">';
mySecondDiv = mySecondDiv + '</div>';
mySecondDiv = mySecondDiv + '<div class="form-group col-md-4">';
mySecondDiv = mySecondDiv + '<input type="number" class="form-control" name="items_quantity[]" placeholder="Ilość" required>';
mySecondDiv = mySecondDiv + '</div>';
mySecondDiv = mySecondDiv + '<div class="form-group col-md-1">';
mySecondDiv = mySecondDiv + '<button type="button" class="btn btn-danger" onclick="delete_item(' + id + ', ' + cnt + ')" value="' + cnt + '" id="delete_item">Usuń</button>';
mySecondDiv = mySecondDiv + '</div>';
mySecondDiv = mySecondDiv + '</div>';
$("#edit_items_" + id).append(mySecondDiv);
$("#items_select").clone().appendTo("#item_select_" + cnt);
};
function delete_item(id, item) {
$("#item_" + id + "_" + item).remove();
};
Za pomocą Smarty generuje modal-e
{foreach from=$data_services_table key=id item=n} <!-- The Modal --> <div class="modal fade" id="modal_edit_service_{$n.id}"> <div class="modal-dialog modal-xl"> <div class="modal-content"> <form enctype="multipart/form-data" action="../offers/" method="POST"> <!-- Modal Header --> <div class="modal-header"> </div> <!-- Modal body --> <div class="modal-body"> <div class="form-row"> <div class="form-group col-md-4"> <input type="text" size="64" class="form-control" name="name" placeholder="Nazwa" value="{$n.name}" required> <input type="hidden" class="form-control" name="id" value="{$n.id}" required> </div> <div class="form-group col-md-4"> <input type="number" step="1" class="form-control" name="year_service" placeholder="Rok" value="{$n.year_service}" required> </div> </div> <div class="form-row"> <div class="form-group col-md-12"> <div class="form-row"> <div class="form-group col-md-5"> <select class="form-control" name="price_option"> </select> </div> <div class="form-group col-md-7"> <input type="number" step="0.01" class="form-control" name="price" placeholder="Cena (PLN)" value="{$n.price}"> </div> </div> </div> </div> <div class="form-row"> <div class="form-group col-md-12"> <input type="text" size="255" class="form-control" name="description" placeholder="Krótki opis" value="{$n.description}"required> </div> </div> <div class="form-row"> <div class="form-group col-md-12"> <div id="edit_items_{$n.id}"> {foreach from=$n.items_quantity key=id item=x name=items} <div class="form-row" id="item_{$n.id}_{$smarty.foreach.items.index}"> <div class="form-group col-md-7"> <select class="form-control" name="items_id[]" id="items_select"> {foreach from=$data_items_table key=id item=i} {if $i.id eq $x.id} {else} {/if} {/foreach} </select> </div> <div class="form-group col-md-4"> {foreach from=$data_items_table key=id item=i} {if $x.id eq $i.id} <input type="number" class="form-control" name="items_quantity[]" placeholder="Ilość" value="{$x.quantity}" required> {/if} {/foreach} </div> <div class="form-group col-md-1"> {if $smarty.foreach.items.index > 0} {/if} </div> </div> {/foreach} </div> </div> </div> <div class="form-row"> <div class="form-group col-md-12"> <div class="text-right"> <div class="form-row"> <div class="form-group col-md-12"> </div> </div> </div> </div> </div> </div> <!-- Modal footer --> <div class="modal-footer"> </div> </form> </div> </div> </div> {/foreach}
Gdy otwieram modal i posiadam wygenerowane przyciski "Usuń" wszystko działa poprawnie. Problem pojawia się gdy usune wszystkie div-y mające przycisk "Usuń" a następnie przyciskiem "Dodaj nowy przedmiot" dodam div-y i przyciskiem "Usuń" próbuję je usunąć, wtedy pojawia się w przeglądarce błąd.
Cytat
Uncaught TypeError: delete_item is not a function
at HTMLButtonElement.onclick ((index):1)
at HTMLButtonElement.onclick ((index):1)