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

Laravel:Blade视图追加的文本框如何提交数据到控制器?

解决动态追加文本框无法提交到控制器的问题

我仔细看了你的代码,发现几个关键问题导致动态生成的numberofvehicle[]输入框没法正确提交到后端控制器,咱们来逐个修复:


问题1:循环里的this指向错误

在你的for循环中,$(this).val()并没有指向当前选中的复选框——这里的this上下文是全局的window对象,根本拿不到复选框的值。你应该直接用循环里的checko[i]来获取当前的复选框元素,再提取它的值。

问题2:fav.push()的返回值不符合预期

Array.push()方法返回的是数组的新长度,所以你现在给文本框设置的value其实是1、2、3...而不是复选框的实际值。如果你的需求是把复选框的值填充到文本框里,得调整这里的逻辑。

额外优化:避免重复生成输入框

每次点击按钮时,最好先清空.someo容器里已有的输入框,不然多次点击会生成一堆重复的元素,影响提交结果。


修复后的完整脚本代码

$("#cont").on('click', function () {
    // 先清空容器里已有的输入框,防止重复追加
    $('.someo').empty();
    
    var fav = [];
    var checko = document.querySelectorAll('input[type=checkbox]:checked');
    
    for (var i = 0; i < checko.length; i++) {
        // 获取当前复选框的实际值
        var checkboxValue = checko[i].value;
        fav.push(checkboxValue);
        // 生成文本框,name保持为numberofvehicle[](后端可通过数组接收)
        $('.someo').append('<input type="text" name="numberofvehicle[]" class="form-control" value="' + checkboxValue + '"/>');
    }
});

后端接收示例(以Laravel为例)

修复后,后端控制器可以直接通过数组形式接收这些值:

// 获取所有动态文本框的值,返回一个数组
$numberOfVehicles = request()->input('numberofvehicle');

另外确认一下你的表单结构:

  • 动态生成的输入框确实在<form>标签内部(你的代码里.someo是form的子元素,这部分没问题)
  • 表单已经包含了csrf_token,请求方法是POST,这些都符合提交要求

内容的提问来源于stack exchange,提问作者Mujeeb Haleemi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:27:40