动态添加和删除输入

Adding and deleting inputs dynamically

我想向已经动态生成的处方集中添加行。

这是我尝试做的事情:

首先我生成视图:

 @foreach($items as $item)
                        <div class="form-group col-sm-2">
                        <input type="text" class="form-control" name="item[]" value="{{$item->name}}">
                        </div>
                        <div class="form-group col-sm-1">
                        <button class="btn btn-danger-outline btn-sm" id="deleteitem">
                            <i class="fa fa-trash"></i> Delete
                        </button>
                        </div>
                        <div class="row" id="addrow"></div>
                    @endforeach

我想要的是生成一个带有自己的删除按钮和相同 divs 的空输入。

这是我的 2 次尝试。

先用纯Javascript:

        <div class="card-footer">
            <button onclick="addInput(addrow);" type="button" id="addItem" class="btn btn-theme-outline btn-sm"><i class="fa fa-plus"></i>Add item</button>
        </div>

Javascript:

var counter = 0;

function addInput(divName) {

    var inputdiv = document.createElement('div');
    inputdiv.id = "item"+counter;
    inputdiv.className = "form-group col-sm-2";
    inputdiv.innerHTML = "<input type='text' name='myitems[]' class='form-control'>";
    document.getElementById(divName).append(inputdiv);

    var buttondiv= document.createElement('div');
    buttondiv.id = "button"+counter;
    buttondiv.className = "form-group col-sm-1" ;
    buttondiv.innerHTML =  "<button class='btn btn-danger-outline btn-sm'><i class='fa fa-trash'></i> Löschen</button>";
    document.getElementById("item"+counter).append(buttondiv);

    var rowdiv = document.createElement('div');
    rowdiv.id ="row"+counter;
    rowdiv.className = "row";
    document.getElementById("button"+counter).append(rowdiv);

}

这会在彼此内部创建 divs,这显然是我不想要的。此外,新元素是在第一个而不是最后一个 div.

之后添加的

我第二次尝试 jQuery:

    <div class="card-footer">
        <button type="button" id="addItem" class="btn btn-theme-outline btn-sm"><i class="fa fa-plus"></i>Add item</button>
    </div>

Javascript:

$(document).ready(function(){
    $("#addItem").click(function(){
        $("#addrow").append("<li>Appended item test</li>");
    });
});

这次我尝试了一个 li 来测试它是否会被附加到最后一个 child 但它被附加到第一个

每次我在最后一次输入上单击新项目按钮时,如何 append/delete @foreach 中的元素有什么想法吗?

<div id="group">

@foreach($items as $item)
    <div class="form-group col-sm-2">
    <input type="text" class="form-control" name="item[]" value="{{$item->name}}">
    </div>
    <div class="form-group col-sm-1">
    <button class="btn btn-danger-outline btn-sm" id="deleteitem">
        <i class="fa fa-trash"></i> Delete
    </button>
    </div>
@endforeach

</div> <!-- / #group -->

jQuery:

$(document).ready(function(){
    $("#addItem").click(function(){
        $("#group").append(template);
    });
});

所以您要为循环中的每次迭代复制 id='addrow'?您将拥有一堆重复的 ID。它可能附加到第一个 addrow 然后中断。我会将您的整个循环包装在一个容器中,然后附加到该容器中:

<div id="container">
    @foreach($items as $item)
                    <div class="form-group col-sm-2">
                    <input type="text" class="form-control" name="item[]" value="{{$item->name}}">
                    </div>
                    <div class="form-group col-sm-1">
                    <button class="btn btn-danger-outline btn-sm" id="deleteitem">
                        <i class="fa fa-trash"></i> Delete
                    </button>
                    </div>
                @endforeach
</div>

$(document).ready(function(){
    $("#addItem").click(function(){
        $("#container").append("<li>Appended item test</li>");
    });
});