Хороший способ проверить все флажки в Laravel -blade - PullRequest
0 голосов
/ 29 апреля 2020

Есть ли какой-нибудь хороший способ поставить кнопку "все проверено" на Blade PHP? Я пытался контролировать это с помощью JavaScript. Однако каждое имя флажка отличается. Даже я знаю, что этот способ кажется плохим.

<script language="JavaScript" type="text/javascript">
      function AllChecked(){
        var all = document.form.all.checked;
        for (var i=0; i<document.form.test.length; i++){
          document.form.test[i].checked = all;
        }
      }

      function DisChecked(){
        var checks = document.form.test;
        var checksCount = 0;
        for (var i=0; i<checks.length; i++){
          if(checks[i].checked == false){
            document.form.all.checked = false;
          }else{
            checksCount += 1;
            if(checksCount == checks.length){
              document.form.all.checked = true;
            }
          }
        }
      }
</script>

@for ($i = 0; $i < 10; $i++){{$i}}
<div>
{{date('m-d',strtotime($i." day"))}}
<input type="checkbox" name="available_date" value="<?php echo date("Y-m-d", strtotime("{{$i}} day")) ?>">
<button onClick="AllChecked();">ALL Checked </button>
@for ($j = 0; $j < 25; $j++)
<input type="checkbox" name="{{date('Y-m-d',strtotime($i." day"))}}" value="{{$j}}">{{ $j }}:00
@endfor
</div> 

Ответы [ 2 ]

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

Вы можете сделать это, используя jquery.

Просто добавьте общий класс к каждому из флажков

ex: - class = "checkbox"

И напишите js функция

  function AllChecked(){
     $('.checkbox').attr("checked");
  }
0 голосов
/ 29 апреля 2020
  1. На самом деле вы не можете управлять динамическим c поведением пользователей с помощью PHP, потому что PHP работает только на сервере, поэтому все такие вещи управляются с помощью javascript (если я вас правильно понял)
  2. Не уверен на 100%, но, кажется, вам не нужны ни флажок, ни кнопка для All Checked
  3. В javascript вы можете выбрать все флажки, используя класс (покажет пример с jquery для простоты)
// html
<input type="checkbox" class="all_checked" name="available_date" value="<?php echo date("Y-m-d", strtotime("{{$i}} day")) ?>">
@for ($j = 0; $j < 25; $j++)
<input type="checkbox" class="checkbox" name="{{date('Y-m-d',strtotime($i." day"))}}" value="{{$j}}">{{ $j }}:00
@endfor
// js
$('.all_checked').on('click', function () {
    const allCheckedCheckbox = $(this);
    $('.checkbox').each(function () {
        $(this).prop('checked', allCheckedCheckbox.prop('checked'));
    });
});
...