Как изменить опцию выбора для переключателя и передать значение модели - PullRequest
0 голосов
/ 11 июля 2019

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

Вот изображение для формы редактирования enter image description here

Я хочу изменить опцию выбора на радио-кнопку, как это

enter image description here

После того, как я установил переключатель, значение inline и offline не перешло в базу данных. Я должен быть таким же, я просто не понимаю, почему с помощью опции выбора можно передать значение в базу данных, но переключатель не может. Вот код для радиокнопки

   <span>In:</span>
                        <input type="radio" name="inline" value="IN" <?php echo set_radio('inline', 'IN'); ?> />

                        <span>Out:</span>
                     <input type="radio" name="offline" value="OUT" <?php echo set_radio('offline', 'OUT'); ?> />

просмотр

<div class="col-md-8">
                        <span>In:</span>
                        <select name="online">
                            <option value="IN">Yes</option>
                            <option value="">No</option>
                        </select>
                        <span>Out:</span>
                        <select name="offline">
                            <option value="OUT">Yes</option>
                            <option value="">No</option>
                        </select>
                    </div>

контроллер

   public function updateStatu(){
    $this->load->model('Status_Board_Model');
    $value = $this->Status_Board_Model->updateStatu();




    $msg['success']=false;
    $msg['type']='update';
    if($value){
        $msg['success'] = true;
   }

    echo json_encode($value);
}

модель

  public function updateStatu()
{
    $statuid = $this->input->post('statuid');
    $data = array(
        'online' => $this->input->post('online'),
        'offline' => $this->input->post('offline'),
        'comment' => $this->input->post('comment')
    );
    $this->db->where('statuid', $statuid);
    $this->db->update('core.status', $data);
   if ($this->db->affected_rows() > 0) {
        return true;
    } else {
        return false;
    }
}

JS

--------------save button for edit-----------------------------------------------------------------------
      $('#saveBtn').click(function(e){
            //alert('hello');
            e.preventDefault();
            window.location.reload();
            var url = $('#myForm').attr('action');
            //var data = $('#myForm').serialize();
            if(true){
                $.ajax({
                    type: 'ajax',
                    method: 'post',
                    url: url,
                    data: $('#myForm').serialize(),
                    datatype: 'json',
                    success: function(){
                        $('#modal_form').modal('hide');
                        $('#myForm').get[0].reset();
                        getStatu();
                    },
                    error: function(){
                        alert('Error');
                    }
                });
            }else{
                alert('error');
            }

        });

        $('#info').on('click','.edit',function(){
            var statuid = $(this).attr('data');
            $('#modal_form').modal('show');
            $('#modal_form').find('.modal-title').text('Edit');
            $('#myForm').attr('action', '<?php echo base_url("../Status_Board_Controller/updateStatu") ?>');

            $.ajax({
                type: 'ajax',
                method: 'get',
                url: '<?php echo base_url("../Status_Board_Controller/editStatu") ?>',
                data: {statuid: statuid},
                dataType: 'json',
                success: function(data){
                    $('input[name=firstName]').val(data.firstName);
                    $('input[name=online]').val(data.online);
                    $('input[name=offline]').val(data.offline);
                    $('input[name=comment]').val(data.comment);
                    $('input[name=statuid]').val(data.statuid);
                },
                error: function(){
                    alert('Fail to get data');
                }
            });
        });

Ответы [ 2 ]

1 голос
/ 29 июля 2019

В вашей форме введено неверное имя, оно должно быть online вместо inline:

<span>In:</span>
<input type="radio" name="online" value="IN" <?php echo set_radio('online', 'IN'); ?> />

<span>Out:</span>
<input type="radio" name="offline" value="OUT" <?php echo set_radio('offline', 'OUT'); ?> />

А также, поскольку вы изменили выбор в радио, вы должны добавитьпустая условная проверка для предотвращения неопределенного индекса массива сообщений онлайн / офлайн на вашей updateStatu модели:

public function updateStatu()
{
    $statuid = $this->input->post('statuid');
    $data = array(
        'online' => !empty($this->input->post('online')) ? $this->input->post('online') : '',
        'offline' => !empty($this->input->post('offline')) ? $this->input->post('offline') : '',
        'comment' => $this->input->post('comment')
    );
    $this->db->where('statuid', $statuid);
    $this->db->update('core.status', $data);
    if ($this->db->affected_rows() > 0) {
        return true;
    } else {
        return false;
    }
}
1 голос
/ 12 июля 2019

Будет полезно, если вы включите ваш HTML, который работает, ваш HTML, который не работает, и любой связанный JavaScript для представления.На самом деле, если эти выборы находятся в форме, и вы отправляете форму, вы отправите несколько комбинаций для выбора:

online=IN&offline=OUT
online=IN&offline=
online=&offline=OUT
online=&offline=

Не ясно, что вы делаете, или, возможно, просто отправляетеизменить, когда один из вариантов выбора изменится?Вам нужно немного объяснить.Похоже, вам нужно 2 набора переключателей с именами онлайн (2) и оффлайн (2) для имитации того, что вы описываете.

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