有没有什么功能可以保持每次选择被选中的数据变化

问题描述

我正在做一个具有多个属性的选择,这是我的代码。我需要关于如何避免将数据发送到 ajax 后不被查看的意见。

所以我的代码是在进行更改之后。如果检测到类映射,数据也应该改变。但数据不会改变。它仅影响第一次更改。

这个form.blade.PHP

<!-- Content -->
<div class="panel panel-default">
    <div class="panel-heading">
        <h4>{{msg('lbl_update_mapping')}}</h4>
    </div>
    <div class="table-responsive">
        <form class="form-horizontal" action="{{ $route }}" method="post">
            {{ method_field('put') }}
            {{ csrf_field() }}
            <table id="marketingsetting-table" width="100%" class="table table-striped b-t b-b">
                <thead>
                    <tr>
                        <th>Funnel Stages</th>
                        <th>Value</th>
                    </tr>
                </thead>
                <tbody>
                @foreach($marketing_status as $value_ms)
                    <tr>
                        <td style="width:60%"> {{$value_ms->name}} </td>
                        @if($value_ms->code == 'L')
                        <td> {!! Form::multiDropdown($value_ms->name.'[]',$marketing_mapping,' ',['id'=> $value_ms->code,'class'=>"select2-form mapping"]) !!} </td>
                        @elseif($value_ms->code != 'L')
                        <td> {!! Form::multiDropdown($value_ms->name.'[]',[],'class'=>"select2-form mapping"]) !!} </td>
                        @endif
                    </tr>
                @endforeach
                </tbody>
            </table>
            <div class="col-lg-2 pull-right">
                {!! Form::buttonSave('','') !!}
                {!! Form::buttonCancel('',route('marketing.marketing_mapping.index')) !!}
            </div>
        </form>
    </div>
</div>

<!-- /content -->
@push('scripts')
<script>
// var table = $('#marketingsetting-table').DataTable({
//     {!! Config::get('datatable.setting') !!}
//     ajax: '{!! $datatableroute !!}',//     columns: [
//         { sTitle: '{{msg("lbl_marketing_status")}}',mData: 'name',width:'80%'},//         { sTitle: '{{msg("lbl_value")}}',mData:'marketing_mapping',orderable:false },//     ],// });

</script>
@endpush
<script>
$( document ).ready(function() {

    $('.mapping').on('change',function(){
        var mapping = $(this).val();
        var id_lead = $('#L').val();
        console.log(id_lead);
        getData(mapping);
    });

    function getData(d_mapping){

        $.ajax({
            type:"GET",dataType: 'json',url: '{!! route("marketing_mapping.mappingAjax")!!}',data:{mapping:d_mapping},success:function(data){
                var select_data = [];
                var count = 0;

                $.each(data,function(i,object){
                    count++;
                });

                if(count != 1){
                    select_data.push({id:'',text:''});
                }

                $.each(data,object){
                    select_data.push({id:i,text:object});
                });

                $('.mapping').select2({ data: select_data });
                updateSelect2('.mapping');
            },error:function(data){

            }
        });
    }

    function updateSelect2(element)
    {
        $(element).select2({
            placeholder:'Please Select',allowClear:true
        });
    }

});
</script>

映射控制器.PHP

<?PHP

namespace App\Http\Controllers\Setting\Marketing;

use App\Helpers\Forms as Form;
use App\Http\Controllers\Controller;
use App\Models\MarketingMapping;
use App\Models\MarketingStatus;
use App\Repositories\Marketing\MappingRepository;
use App\Repositories\Marketing\MarketingStatusRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\Facades\DataTables;

class MappingController extends Controller
{
    public function __construct(MappingRepository $mapping,MarketingStatusRepository $marketingstatus)
    {
        // Authorization
        $this->middleware('authorize')->only(['index','edit']);
        $this->marketingstatus = $marketingstatus;
        $this->mapping         = $mapping;
    }

    /**
     * display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $mappingsetting = $this->mapping->findBy('is_active',1);
        $data           = [
            'breadcrumb'     => array(msg('lbl_setting',true) => route('setting'),msg('lbl_marketing'),msg('lbl_mapping')),'content'        => 'setting.marketing.marketing_mapping.list',// 'submenu'    => 'setting.marketing.navigation','title'          => msg('lbl_mapping'),'settingtitle'   => msg('lbl_marketing'),'mappingsetting' => $mappingsetting,'datatableroute' => route('marketing.marketing_mapping.getData'),];

        return view('layouts.setting_template')->with($data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $mappingsetting = $this->mapping->findBy('is_active',1);
        // $marketingstatus = $this->marketingstatus->findby('is_active',1);
        $marketingmapping = $this->mapping->getSelection();
        $marketingstatus  = MarketingStatus::where('is_active','1')->get();

        $data = [
            'breadcrumb'        => array(msg('lbl_setting',// 'submenu' => 'setting.marketing.','content'           => 'setting.marketing.marketing_mapping.form','title'             => msg('lbl_mapping'),'settingtitle'      => msg('lbl_marketing'),'toggle'            => 'mapping','mappingsetting'    => $mappingsetting,'route'             => route('marketing.marketing_mapping.update',1),'datatableroute'    => route('marketing_mapping.getDataID',$id),'type'              => $id,'marketing_status'  => $marketingstatus,'marketing_mapping' => $marketingmapping,];

        return view('layouts.setting_template')->with($data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,$id)
    {
        dd($request->all());
        $data = $request->except('_token','marketingsetting-table_length','_method');

        foreach ($data as $key => $value) {

            $marketing_status = json_encode($value);

            $userid = Auth::id();
            $date   = date('Y-m-d H:i:s');

            $general = MarketingStatus::where('name',$key)->update([
                'marketing_mapping_id' => $marketing_status,'updated_by'           => $userid,'updated_at'           => $date]);
        }

        \Session::flash('alert-success','Record Successfully Updated');
        return redirect()->route('marketing.marketing_mapping.index');
    }

    public function getData()
    {
        // $mappingsetting = $this->mapping->findBy('is_active',1);
        $marketingstatus   = MarketingStatus::where('is_active',1)->get();
        $marketing_mapping = MarketingMapping::all()->pluck('name','id')->all();

        return Datatables::make($marketingstatus)
            ->addColumn('name',function ($marketingstatus) {
                return $marketingstatus->name . '<br /><span class="text-muted">' . $marketingstatus->description . '</span>';
            })
            ->addColumn('marketing_mapping',function ($marketingstatus) use ($marketing_mapping) {
                $json_data    = $marketingstatus->marketing_mapping_id;
                $json_data    = array_flip($json_data);
                $mapping_data = array_intersect_key($marketing_mapping,$json_data);
                $mapping_name = implode(',',$mapping_data);
                return $mapping_name;

            })
            ->rawColumns(['name'])
            ->toJson();
    }

    public function getDataID($id)
    {
        $marketingstatus = $this->marketingstatus->findby('is_active',1);

        $mappingsetting = $this->mapping->findBy('is_active',1);

        return Datatables::make($marketingstatus)
            ->addColumn('name',function ($mappingstatus) {
                return $mappingstatus->name . '<br /><span class="text-muted">' . $mappingstatus->description . '</span>';
            })
            ->addColumn('marketing_mapping',function ($marketingstatus) {
                $marketingmapping = $this->mapping->getSelection();
                return Form::multiDropdown($marketingstatus->name . '[]',$marketingmapping,['class' => 'mapping select2-form','id' => $marketingstatus->code]);
            })
            ->rawColumns(['name','marketing_mapping'])
            ->toJson();
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

    public function getMappingAjax(Request $request)
    {
        $mapping_id = $request->get('mapping');

        $mapping_data = MarketingMapping::wherenotin('id',$mapping_id)->pluck('name','id')->all();

        return $mapping_data;
    }

}

这是结果更新:

enter image description here

这是潜在客户行更改前的页面视图:

enter image description here

enter image description here

enter image description here

在引导行中选择数据后发生更改:

enter image description here

我这样做的原因是为了避免重复选择相同的数据。有什么办法可以简化流程吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)