Jquery установить флажок, если значение передано = 1 - PullRequest
0 голосов
/ 24 января 2020

В настоящее время я работаю над панелью администратора, где с помощью флажков пользователь получает права. Данные передаются из моего основного представления в модальный сценарий js с методом data.
У меня проблемы с тем, что, когда значение, переданное флажку, равно 1 (задано правами администратора), флажок должен быть установлен, но это не так. Я проверил, передается ли значение прямо в модальное состояние, изменив входные данные на текст, где я вижу правильное значение

Чего я хотел бы достичь: когда значение из БД на моем Основное представление передается моему модалу, флажки, значение которых равно 1, проверяются, а остальные (значение = 0) не проверяются. Кроме того, это не влияет на мою способность редактировать права пользователя.

Я попробовал этот подход:

    <!-- Send Data to modal -->
   <script type="text/javascript">
    $('#edit').on('show.bs.modal', function(event) {
      var button = $(event.relatedTarget); // Button that triggered the modal
      var id = button.data('id'); // Extract info from data-* attributes
      var admin = button.data('admin');
      var expert = button.data('expert');
      var modal = $(this);
      $('#edit_form').attr('action', '{{URL::to('/')}}/AdminPanel/'+id); //No spaces!!!
      modal.find('#admin_field').val(admin);
      modal.find('#expert_field').val(expert);
    });
    </script>


    <!-- Modal -->
    <div class="form-group row">
      <div class="col-xs-8 col-sm-7 col-md-6">
        <label for="admin_field" class="col-md-4 col-form-label text-md-right">{{ __('Admin?') }}
          <input id="admin_field" type="checkbox" class="w3-check" name="Admin">
        </label>
      </div>
    </div>

      <script type="text/javascript">
      $( document ).ready(function() {
        // auto check checkbox if value == 1
        $('.w3-check').each(function(e){
            if($(this).val() == 1){
                $(this).prop("checked", true);
            }
        });
        // Checkbox instead of on:off 1:0
        $('input:checkbox').on('change', function(){
          this.value = this.checked ? 1 : 0;
        }).change();
      });
      </script>

Любая помощь очень ценится. !

Ответы [ 2 ]

0 голосов
/ 24 января 2020

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

    <!-- Send Data to modal -->
   <script type="text/javascript">
    $('#edit').on('show.bs.modal', function(event) {
      var button = $(event.relatedTarget); // Button that triggered the modal
      var id = button.data('id'); // Extract info from data-* attributes
      var admin = button.data('admin');
      var expert = button.data('expert');
      var modal = $(this);
      $('#edit_form').attr('action', '{{URL::to('/')}}/AdminPanel/'+id); //No spaces!!!
            modal.find('#admin_field').val(admin).each(function(e){
          if($(this).val() == 1){
              $(this).prop("checked", true);
          }
      });
      modal.find('#expert_field').val(expert).each(function(e){
          if($(this).val() == 1){
              $(this).prop("checked", true);
          }
    });
    </script>


    <!-- Modal -->
    <div class="form-group row">
      <div class="col-xs-8 col-sm-7 col-md-6">
        <label for="admin_field" class="col-md-4 col-form-label text-md-right">{{ __('Admin?') }}
          <input id="admin_field" type="checkbox" class="w3-check" name="Admin">
        </label>
      </div>
    </div>

      <script type="text/javascript">
      $( document ).ready(function() {
        // Checkbox instead of on:off 1:0
        $('input:checkbox').on('change', function(){
          this.value = this.checked ? 1 : 0;
        }).change();
      });
      </script>
0 голосов
/ 24 января 2020

вы можете попробовать вот так, потому что вы запускаете значения в al oop, поэтому, если в l oop будет 0, то все значения флажков будут сняты.

$('input.type_checkbox[value="1"]').prop('checked', true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...