【问题标题】:Get the array value of select box within the form获取表单内选择框的数组值
【发布时间】:2018-06-03 15:28:36
【问题描述】:

在产品多的情况下,用户可以动态添加新的下拉框。当我单击提交时,我只想在表单中获取“类别 []”的值。

这是代码:

<form name="store_category" method="post" enctype="multipart/form-data" action="{{ route('admin.product.category.store') }}">
    {!!csrf_field()!!}
    {!!""; $lang = session('locale') == "" ? "zh" : session('locale'); !!}
    <div class="form-group category-select-container">
        {!! Form::select("categories_$project->id[]", ${"categories_" . $lang}, null, ["class" => "input-sm"]) !!}
        <a href="#" class="btn btn-xs btn-danger btn-remove-category pull-right">{{trans('string.Remove')}}</a>
    </div>
    <div class="form-group">
        <button type="button" class="btn btn-dark btn-add-more-category">{{trans('string.Add More')}}</button>
        <button type="submit" class="btn blue btn-theme-colored">{{trans('string.submit')}}</button>
    </div>
</form>

我尝试将数组名称重命名为其他名称,但是当用户动态添加新的下拉框时,它无法跟随该行的项目编号。

var template = '<div class="form-group category-select-container">'+
                    '{!! Form::select("categories_$project->id[]", ${"categories_" . $lang}, null, ["class" => "input-sm"]) !!}'+
                    '<a href="#" class="btn btn-xs btn-danger btn-remove-category pull-right">{{trans("string.Remove")}}</a>'+
                '</div>';
$('.btn-add-more-category').on('click', function(e){
    e.preventDefault();
    $(this).before(template);
})

【问题讨论】:

    标签: javascript php jquery html laravel


    【解决方案1】:

    我真的很想知道你的Form::select()s 中这一行的输出是什么

    categories_$project->id[]
    

    因此,无论如何,如果您想对您选择的标签进行分组,您必须为每个标签分配相同的名称。假设您在 $projects 的数组中循环。每行都会有

    <form name="store_category" method="post" enctype="multipart/form-data" action="{{ route('admin.product.category.store') }}"> 
        {!!csrf_field()!!} 
        @php $lang = session('locale') == "" ? "zh" : session('locale'); @endphp
        <div class="form-group category-select-container"> 
            {!! Form::select("category[]", ${"categories_" . $lang}, null, ["class" => "input-sm"]) !!} 
            <a href="#" class="btn btn-xs btn-danger btn-remove-category pull-right">{{trans('string.Remove')}}</a> 
        </div>
        <div class="form-group"> 
            <button type="button" class="btn btn-dark btn-add-more-category">{{trans('string.Add More')}}</button> 
            <button type="submit" class="btn blue btn-theme-colored">{{trans('string.submit')}}</button> 
        </div> 
    </form>
    

    接下来,您必须将点击事件绑定到您的所有.btn-add-more-category。假设您的父表有一个类.table

    <script>
        $(function () {
            $(".table").on("click", ".btn-add-more-category", function(e) {
                var template = '<div class="form-group category-select-container"> ' +
                    '{!! Form::select("category[]", ${"categories_" . $lang}, null, ["class" => "input-sm"]) !!} ' +
                    '<a href="#" class="btn btn-xs btn-danger btn-remove-category pull-right">{{trans('string.Remove')}}</a>' +
                '</div>';
                var container = $(this).parent();
                $(template).insertBefore(container);
            });
        });
    </script>
    

    另外,我建议你把这条线移到你的控制器上

    $lang = session('locale') == "" ? "zh" : session('locale');
    

    【讨论】:

    • categories_$project->id[] 它将是 categories_298[]
    • 为什么一定要在select中指定项目id?
    • 感谢将line lang放入控制器的建议。我正在测试它,它还不是最终代码。我想要的是在同一个表单中获得多项选择。从照片中可以看出,一页将有多种形式。选择框将动态添加。
    • 所以我试图创建一个独特的数组,但它不起作用。哈哈
    • 您将通过$request-&gt;get('categories'); 获取控制器中的数组。我现在不能帮你调试它。我会确保稍后回复你,好吗? ?
    猜你喜欢
    • 2015-01-27
    • 2013-10-07
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2011-11-27
    • 2017-03-23
    • 2022-01-12
    相关资源
    最近更新 更多