我想在更改时保存表单,并使用 laravel 和 Jquery 创建一个动态表单

Posted

技术标签:

【中文标题】我想在更改时保存表单,并使用 laravel 和 Jquery 创建一个动态表单【英文标题】:I want save form on change and i create a dynamic form using laravel and Jquery 【发布时间】:2021-10-26 10:19:27 【问题描述】:

当我通过 JQuery 调用它时,我使用 Laravel 在 html 中创建了一个动态表单,它创建的第一个显示未定义的表单 ID,并且在下一个表单中显示它的表单 Id。如何解决这个问题。下面我分享我的代码:

@for($i =1;$i<=60; $i++) 
    <form action=" route('assign-files') " method="POST" id="formfile$i">
        @csrf()
        <div class="form-group row">
            <input type="hidden" name="campaign_id" value="$campaignObj->campaign_id" id='campignId'>
            <input type="hidden" name="order" value="$i" id="fileId">
            <label for="inputEmail3" class="col-2 col-form-label">Day $i</label>
            <div class="col-6">
                <select class="form-select recordingForm_id" aria-label="Default select example" id="recordingForm_id$i" name="campaign_type_id">
                    <option selected>Select</option>
                    @foreach($recordingObj as $recording)
                    @if(checkFileOnCompain($campaignObj->campaign_id, $recording->id, $i))
                    <option value="$recording->id" selected>$recording->file_name</option>
                    @else
                    <option value="$recording->id">$recording->file_name

                    </option>
                    @endif
                    @endforeach
                </select>
            [</div>][1]
        </div>
    </form>
@endfor
//jquery code
<script type='text/javascript'>
    $(document).ready(function() 
     var recordingForm_id ='';
     var selectVal='';
     var formId ='';
     var campignId='';
     var fileId='';
        $('.recordingForm_id').change(function() 
            var recordingForm_id = $(this).attr('id');
            var selectVal = $("#"+recordingForm_id+" option:selected").val();
            var formId = $('#'+ recordingForm_id).parent().parent().parent().attr('id');
            var campignId = $('#campignId').val(); 
            var fileId = $('#fileId').val();
    
         $('#'+formId).submit();
    
    );
    
);
</script>

【问题讨论】:

你能添加一个浏览器接收的html示例输出和你的jquery代码吗? 以上截图分享 meta.***.com/questions/285551/… 【参考方案1】:

试试这个解决方案

将 attr id='campignId' 更改为 class='campignId' 并在更改输入时选择获取父表单并且选择的值不为 null 以提交表单

@for($i =1;$i<=60; $i++) 
    <form action=" route('assign-files') " method="POST" id="formfile$i">
        @csrf()
        <div class="form-group row">
            <input type="hidden" name="campaign_id" value="$campaignObj->campaign_id" class='campignId'>
            <input type="hidden" name="order" value="$i" class="fileId">
            <label for="inputEmail3" class="col-2 col-form-label">Day $i</label>
            <div class="col-6">
                <select class="form-select recordingForm_id" aria-label="Default select example" id="recordingForm_id$i" name="campaign_type_id">
                    <option selected>Select</option>
                    @foreach($recordingObj as $recording)
                    @if(checkFileOnCompain($campaignObj->campaign_id, $recording->id, $i))
                    <option value="$recording->id" selected>$recording->file_name</option>
                    @else
                    <option value="$recording->id">$recording->file_name</option>
                    @endif
                    @endforeach
                </select>
            </div>
        </div>
    </form>
@endfor

jquery 代码

<script type='text/javascript'>
    $(document).ready(function() 
     var selectVal='';
     var formId ='';
        $('.recordingForm_id').change(function() 
            var selectVal = $(this).find(":selected").val();
            var formId = $(this).parents('form').attr('id');

            if(selectVal === "")
                $('#'+formId).submit();
            
    
        );
    
     );
</script>

【讨论】:

以上是关于我想在更改时保存表单,并使用 laravel 和 Jquery 创建一个动态表单的主要内容,如果未能解决你的问题,请参考以下文章

如果单击按钮,下拉列表选项会更改(VueJS 和 Laravel 6)

laravel 7以注册表单添加收音机

单击按钮时附加新文本字段并通过单击 Laravel 4 中的按钮删除

为啥当我编辑并保存对一个帖子的更改时,所有其他帖子都会进行相同的更改?我该如何解决?我正在使用 laravel 8

使用“logoutOtherDevices”时,Laravel 新密码不会保存到数据库中

如何使用户的个人资料页面可编辑,我想在编辑后保存这些数据(vue.js + laravel)