Передача значения кнопки в текстовое поле и обновление статуса. (Codeigniter)

#javascript #html #codeigniter

#javascript #HTML #codeigniter

Вопрос:

Как я могу передать значение моего атрибута статуса «АКТИВНЫЙ» в мое текстовое поле? Моя цель — обновить статус моего пользователя, нажав АКТИВНУЮ кнопку. Зная, что статус пользователя находится в ожидании. Я могу легко передать идентификатор пользователя, но у меня возникли проблемы с передачей статуса.

Я привел скриншот ниже.

Число просмотров:

 <button data-id="<?php echo $rows->transID?>"  ustatus="Active" class="showmodal" class="fundTable btn btn-success btn-sm text-bold user_status">
   <?php echo $rows->transID?> active
</button>  // I can pass the ID to my textbox easily, but the status is not working.

<div id="fundModal" class="modal" tabindex="-1" role="dialog">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">amp;times;</span>
        </button>
      </div>
      <div class="modal-body">
        <form action="#">
          <div class="form-group">
            <label for="">UserID</label>
            <input type="text" id="usertransferid">
          </div>
          <div class="form-group">
            <label for="">status</label>
            <input type="text" name="status" id="user_status" value="">
          </div>
        </form>
      </div>
   
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>
 

Сценарий:

 <script>

$('.showmodal').on('click', function(e){
    e.preventDefault();
  
  $('#usertransferid').val(this.dataset.id);
  $('#fundModal').modal('show')
})


$('#fundModal').on('hidden.bs.modal', function () {
  $('#usertransferid').val('')
  $('#ustatus').val('')
})
    </script>
    
<script type="text/javascript">
    $(document).on('click','.user_status',function(){

     
        var status = $(this).attr('ustatus');
        //get attribute value in variable

    
        $('#user_status').val(status);  //I tried passing the user status but it's not working

    

    }); 
</script>
 

Контроллер:

 public function user_status_changed()
{
    //get hidden values in variables
    $id = $this->input->post('id');
    $status = $this->input->post('status');

        


    $data = array('status' => $status );

    
    $this->db->update('users', $data); //Update status here

    //Create success message
    $this->session->set_flashdata('msg',"User status has been changed successfully.");
    $this->session->set_flashdata('msg_class','alert-success');

    return redirect('welcome/users');
}
 

Ответ №1:

Вы не получаете обновленный статус, потому что вы получаете неопределенный с $(this).attr('ustatus');

Это потому $(this) , что указывает на класс user_status , который не имеет атрибута ustatus

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

 $(document).on('click','.user_status',function(){
    var status = $('.showmodal').attr('ustatus');   // check the change here
    $('#user_status').val(status); 
});
 

P.S: в вашем определении кнопки вы используете class="..." дважды, что является ошибочным. Просто делай:

 <button data-id="<?php echo $rows->transID?>"  ustatus="Active" class="showmodal fundTable btn btn-success btn-sm text-bold user_status">
   <?php echo $rows->transID?> active
</button>