сохранить старое значение выбора при сбое проверки в ajax в laravel - PullRequest
0 голосов
/ 04 апреля 2020

В моем проекте Laravel у меня есть форма встречи, где пациент может выбрать врача после выбора отделения из выпадающего списка. Я использую AJAX для выполнения функций.

Теперь, после любой проверки не удалось, все восстановленные значения формы принимают доктора.

Но я хочу автоматически восстановить этого выбранного врача после неудачной проверки.

html форма

<select class="form-control appointment_form_searchField"  id="appointment_branch" name="appointment_branch" style="font-size:.7em;;width: 100%;">
    <option value="">Select Branch</option>

    @if($_SESSION['branch'] != null)

      @foreach($_SESSION['branch'] as $data)    
        <option value="{{ $data->id }}">{{ $data->name }}</option>
      @endforeach

   @endif                              
</select>

<select class="form-control" id="appointment_doctor" name="appointment_doctor" style="font-size:.7em;padding: 0.6500rem .75rem;width: 100%;">
    <option value="">Select Doctor</option>
</select>

AJAX

jQuery(".appointment_form_searchField").change(function() {        
    var branch_id = $("#appointment_branch").val();   
    var token = $('input[name=_token]').val();
    if(branch_id.trim() != '')
    {                
        jQuery.ajax({    
          url:"{{ url('/filter_doctor') }}",
          type: 'GET',
          data: {_token :token, branch_id : branch_id},
          success:function(msg){    
            $('#appointment_doctor option').remove();
            trHTML = '';
            trHTML += "<option value=''>Select Doctor</option>";
            msg.forEach(function(item){    
              trHTML += "<option value='"+item.id+"'>" + inputem.name + "</option>";
            });    
                $('#appointment_doctor').append(trHTML);
            }
        });
    }              
});

контроллер

public function filter_doctor(Request $request)
{
    $branch_id = $request->branch_id;

    $query =  DB::table('service_doctors');
    $query->select('doctor_id','inactive_dates_in_this_month');

    if($branch_id != '0')
        $query->where('branch_id','=', $branch_id);

    $result_time = $query->get();
    $array_doctor_id = $result_time->pluck('doctor_id');
    $doctor = Doctor::whereIn('id', $array_doctor_id)->get();
    return $doctor;
}

Кто-нибудь Помогите, пожалуйста? Заранее спасибо

1 Ответ

0 голосов
/ 05 апреля 2020

Если вы используете Laravel 5, тогда вы можете сделать что-то вроде этого.

В вашей форме добавить недостающие детали встречи_ответ и назначение_для, как показано ниже.

Опция Request::old() загрузить предыдущий отправленное значение в from, следовательно, вам нужно сначала выбрать старое значение для appointment_branch'. Also temporary store old встречи_doctor value in data-oldid`, чтобы скрипт мог определить, какое было старое значение, отправленное пользователем, и может загрузить это поле выбора, когда документ будет готов.

<select class="form-control appointment_form_searchField"  id="appointment_branch" name="appointment_branch" style="font-size:.7em;;width: 100%;">
    <option value="">Select Branch</option>

    @if($_SESSION['branch'] != null)

      @foreach($_SESSION['branch'] as $data)    
        <option value="{{ $data->id }}" {{ Request::old()?(Request::old('appointment_branch')==$data->id?'selected="selected"':''):'' }}>{{ $data->name }}</option>
      @endforeach

   @endif                              
</select>

<select class="form-control" id="appointment_doctor" name="appointment_doctor" style="font-size:.7em;padding: 0.6500rem .75rem;width: 100%;"   data-oldid="{{ Request::old()?Request::old('appointment_doctor'):'' }}">
    <option value="">Select Doctor</option>
</select>

А затем напишите свой сценарий, как показано ниже.

<script>
    jQuery(document).ready(function($){
        if(jQuery("#appointment_doctor").data('oldid')!='' && typeof(jQuery("#appointment_doctor").data('oldid'))!="undefined"){
            jQuery(".appointment_form_searchField").change();
        }
    });



    jQuery(".appointment_form_searchField").change(function() {        
        var branch_id = $("#appointment_branch").val();   
        var token = $('input[name=_token]').val();

        if(branch_id.trim() != '')
        {                
            jQuery.ajax({    
              url:"{{ url('/filter_doctor') }}",
              type: 'GET',
              data: {_token :token, branch_id : branch_id},
              success:function(msg){    
                $('#appointment_doctor option').remove();
                trHTML = '';
                trHTML += "<option value=''>Select Doctor</option>";
                msg.forEach(function(item){    
                  trHTML += "<option value='"+item.id+"'>" + inputem.name + "</option>";
                });    
                    $('#appointment_doctor').append(trHTML);
                }
                if(jQuery("#appointment_doctor").data('oldid')!='' && typeof(jQuery("#appointment_doctor").data('oldid'))!="undefined"){
                    jQuery('#appointment_doctor').val(jQuery("#appointment_doctor").data('oldid')); //select the old doctor id here
                }
            });
        }              
    });

</script>
...