You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel动态表单:如何让第二行及后续行显示Delete按钮

解决方案

1. 修改Blade模板代码

利用Blade循环自带的$loop->first变量判断是否为第一行,第一行保留Add按钮,其余行显示Delete按钮;同时把原Add按钮的id改为class(循环会生成多个按钮,重复ID会导致JS选择器失效):

@foreach ($form->requirements as $index => $reqs)
<tr>
    <td>
        <input type="text" name="addMoreInputFields[{{ $index }}][requirement]"
               placeholder="Enter requirements"
               value="{{ $reqs['requirement'] }}" class="form-control" />
    </td>
    <td>
        @if($loop->first)
            <button type="button" name="add" class="btn btn-outline-primary dynamic-ar">Add</button>
        @else
            <button type="button" class="btn btn-outline-danger remove-input-field">Delete</button>
        @endif
    </td>
</tr>
@endforeach

2. 调整JavaScript代码

  • 把Add按钮的选择器从#dynamic-ar改为.dynamic-ar(适配class选择器)
  • 初始化i为现有表格行的数量,确保新增字段的索引不会和已有的重复:
// 初始化i为现有行的数量,避免索引重复冲突
var i = $("#dynamicAddRemove tr").length;

$(".dynamic-ar").click(function() {
    $("#dynamicAddRemove").append(`<tr>
        <td>
            <input type="text" name="addMoreInputFields[${i}][requirement]" 
                   placeholder="Enter requirements" class="form-control" />
        </td>
        <td>
            <button type="button" class="btn btn-outline-danger remove-input-field">Delete</button>
        </td>
    </tr>`);
    i++;
});

$(document).on('click', '.remove-input-field', function() {
    $(this).parents('tr').remove();
});

关键修改说明

  • 通过$loop->first实现第一行与其他行的按钮差异化显示
  • 替换Add按钮的id为class,避免循环生成重复ID导致JS事件失效
  • 初始化i为现有行数量,保证新增字段的name索引连续不重复
  • 动态新增的行统一显示Delete按钮,完全匹配需求

内容的提问来源于stack exchange,提问作者Sharmae Reyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:10:23