Обновить статус каждой динамической строки, используя флажок - PullRequest
3 голосов
/ 03 ноября 2019

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

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

HTML:

  <button type="button" class="btn btn-info" id="update_status_btn">Update Status</button>         

Выбранная запись:

success: function(data){
      var trHTMLr = '';
       $.each(data,function(i,row){
       trHTMLr += '<tr>' + 
                     '<td><input type="text" name="first_name" class="form-control text-center" value="' + row.first_name + '" /></td>' + 
                     '<td><input type="checkbox" name="status" class="form-control text-center updatestatusclass" data-id="' + row.id + '" value="' + 'YES' + '"/></td>' + 
                  '</tr>';
});
$('#mytable').append(trHTML);
}

Обновление статуса:

   $("#update_status_btn").click(function(e) {
    e.preventDefault();
      $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
      });
      var eachrow_value=[];
      $('.updatestatusclass').each(function(){
      if($(this).is(":checked"))
      {
      eachrow_value.push($(this).val());  
      }
      });
      eachrow_value=eachrow_value.toString();
       var row_id = $('.updatestatusclass').attr('data-id');
      $.ajax({
       url: "{{ url('/updatestatus') }}",
    method: 'POST',
      data: {id: row_id, status: eachrow_value},
   dataType: 'json',
   success: function (response) {
           alert('Updated Successfully!');
          },
          error: function (response) {
            alert("Not Updated, Try again.");
          }
      });
  });

Контроллер:

  if ($request->ajax()) {
            $stat = Services::where('id', $request->get('id'))
                ->update(array(
                    'status' =>  $request->get('status')
                ));
            return Response::json($stat);
        }

Я хочу обновить статус выбранной строки с помощью флажка с соответствующей строкойID.

1 Ответ

4 голосов
/ 03 ноября 2019

То, что вы ищете, это обновить несколько флажков за один раз. Таким образом, вам нужно хранить как выбранные, так и невыбранные флажки.

Ваш jQuery

let checkedIds = [];
let unCheckedIds = [];
$('.updatestatusclass').each(function () {
    if ($(this).is(":checked")) {
        checkedIds.push($(this).attr('data-id'));
    } else {
        unCheckedIds.push($(this).attr('data-id'));
    }
});

$.ajax({
    url: "{{ url('/updatestatus') }}",
    method: 'POST',
    data: {
        checkedIds: checkedIds,
        checkedIdStatus: 'active', //do your thing
        unCheckedIds: unCheckedIds,
        unCheckedIdStatus: 'inactive', //do your thing
    },
    dataType: 'json',
    success: function (response) {
        alert('Updated Successfully!');
    },
    error: function (response) {
        alert("Not Updated, Try again.");
    }
});

В вашем контроллере

if ($request->ajax()) {
    Services::whereIn('id', $request->get('checkedIds'))
        ->update(array(
            'status' =>  $request->get('checkedIdStatus')
        ));
    Services::whereIn('id', $request->get('unCheckedIds'))
        ->update(array(
            'status' =>  $request->get('unCheckedIdStatus')
        ));
}

Надеюсь, это поможет. Ура! * * 1013

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...