Witam napisałem dwie funkcje do dodawania oraz usuwania div-a z kodu.
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();
};
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"> <h3 class="modal-title">Dane usługi
</h3> <button type="button" class="close" data-dismiss="modal">×
</button>
<!-- Modal body -->
<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 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 class="form-group col-md-12"> <div class="form-group col-md-5"> <select class="form-control" name="price_option"> <option value="0">Cena (PLN) obliczona z przedmiotów
</option> <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 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 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}
<option value="{$i.id}" selected>{$i.name} - {$i.price}
</option> {else}
{/if}
{/foreach}
<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 class="form-group col-md-1"> {if $smarty.foreach.items.index > 0}
<button type="button" class="btn btn-danger" onclick="delete_item({$n.id}, {$smarty.foreach.items.index})">Usuń
</button> {/if}
{/foreach}
<div class="form-group col-md-12"> <div class="form-group col-md-12"> <button type="button" class="btn btn-primary" onclick="add_item({$n.id})">Dodaj nowy przedmiot
</button>
<!-- Modal footer -->
<div class="modal-footer"> <button type="submit" class="btn btn-primary" name="submit_save_service_information">Zapisz
</button> <button type="button" class="btn btn-secondary" data-dismiss="modal">Zamknij
</button> {/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)
Ten post edytował matti9410 24.03.2020, 17:24:30