Могу ли я удалить дублирующиеся данные после извлечения их на модал, используя операцию редактирования? - PullRequest
1 голос
/ 10 марта 2020

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

enter image description here

Как видите, у меня есть две разные данные, после того как я щелкну одну из них для редактирования. затем это происходит

enter image description here

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

Так как я могу предотвратить это?

Моя правка - Ajax

//edit
$('#showdata').on('click', '.item-edit', function(){
        var id = $(this).attr('data');
        $('#myModal').modal('show');
        $('#myModal').find('.modal-title').text('Edit Question');
        $('#myForm').attr('action', '<?php echo base_url() ?>teachers/updateQuestion');
        $.ajax({
            type: 'ajax',
            method: 'get',
            url: '<?php echo base_url() ?>teachers/editQuestion',
            data: {id: id},
            async: false,
            dataType: 'json',
            success: function(data){
                $('input[name=question]').val(data.question);
                $('input[name=choice1]').val(data.choice1);
                $('input[name=choice2]').val(data.choice2);
                $('input[name=choice3]').val(data.choice3);
                $('input[name=answer]').val(data.answer);
            },
            error: function(){
                alert('Could not Edit Data');
            }
        });
    });

Контроллер

public function editQuestion(){
    $result = $this->teacher_model->editQuestion();
    echo json_encode($result);
}

Модель

public function editQuestion(){
    $id = $this->input->get('id');
    $this->db->where('id', $id);
    $query = $this->db->get('quiz');
    if($query->num_rows() > 0){
        return $query->row();
    }else{
        return false;
    }
}

HTML

<!-- Modal -->

<div class="modal fade-scale" id="myModal" tabindex="-1" role="dialog">
   <div class="modal-dialog" role="document">
     <div class="modal-content">
       <div class="modal-header">
         <h4 class="modal-title">Modal title</h4>
       </div>
       <div class="modal-body">
       <div class="card">
            <div class="card-header">
                <h4>Create a Multiple Choice Question</h4>
            </div>
            <div class="card-body">
                <form>
                    <div class="input-group">
                        <div class="input-group-prepend">
                            <span class="input-group-text">Question</span>
                        </div>
                        <input type="text" name="question" id="question" class="form-control"  required />
                        <p id="err_field"></p>
                    </div>

                    <hr>


                    <div class="input-group input-group-sm mb-3">
                        <div class="input-group-prepend">
                            <span class="input-group-text" id="inputGroup-sizing-sm">Choice 1</span>
                        </div>
                        <input type="text" class="form-control" name="choice1" id="choice1" aria-describedby="inputGroup-sizing-sm" required />
                    </div>


                    <div class="input-group input-group-sm mb-3">
                        <div class="input-group-prepend">
                            <span class="input-group-text" id="inputGroup-sizing-sm">Choice 2</span>
                        </div>
                        <input type="text" class="form-control" name="choice2" id="choice2" aria-describedby="inputGroup-sizing-sm" required />
                    </div>

                    <div class="input-group input-group-sm mb-3">
                        <div class="input-group-prepend">
                            <span class="input-group-text" id="inputGroup-sizing-sm">Choice 3</span>
                        </div>
                        <input type="text" class="form-control" name="choice3" id="choice3" aria-describedby="inputGroup-sizing-sm" required />
                    </div>

                    <div class="input-group input-group-sm mb-3">
                        <div class="input-group-prepend">
                            <span class="input-group-text" id="inputGroup-sizing-sm">Answer Choice</span>
                        </div>
                        <input type="text" class="form-control" name="answer" id="answer" aria-describedby="inputGroup-sizing-sm" required /> 
                    </div>

                    <input type="button" id="btnSave" class="btn btn-block btn-info" value="Submit" />

                </form>
            </div>
        </div>
       </div>
       <div class="modal-footer">
         <button type="button" id="btnClose" class="btn btn-default">Close</button>
         <button type="button" id="btnSave" class="btn btn-primary">Save changes</button>
       </div>
     </div><!-- /.modal-content -->
   </div><!-- /.modal-dialog -->
 </div>

Получено для отображения данных с использованием ajax

for(i=0; i<data.length; i++){
                html +='<div class="card">'+
                            '<div class="card-header" style="background-color:#A9CEFA;">'+
                                '<h4>Created Question no.'+ n++ +'</h4>'+
                                '</div>'+
                                '<div class="card-body">'+
                                    '<form>'+
                                        '<input type="hidden" name="txtId" value="0">'+
                                        '<div class="input-group">'+
                                        '<div class="input-group-prepend">'+
                                                '<span class="input-group-text">Question</span>'+
                                            '</div>'+
                                            '<input type="text" name="question" value="'+data[i].question+'" class="form-control" required>'+
                                        '</div>'+
                                        '<hr>';
                                        if(!data[i].choice1==0){
                                        html += '<div class="input-group input-group-sm mb-3">'+
                                                    '<div class="input-group-prepend">'+
                                                        '<span class="input-group-text" id="inputGroup-sizing-sm">Choice 1</span>'+
                                                    '</div>'+
                                                    '<input type="text" class="form-control" value="'+data[i].choice1+'" name="choice1" aria-describedby="inputGroup-sizing-sm" required>'+
                                                '</div>';
                                        }
                                        if(!data[i].choice2==0){
                                        html += '<div class="input-group input-group-sm mb-3">'+
                                            '<div class="input-group-prepend">'+
                                                '<span class="input-group-text" id="inputGroup-sizing-sm">Choice 2</span>'+
                                            '</div>'+
                                            '<input type="text" class="form-control" name="choice2" value="'+data[i].choice2+'" aria-describedby="inputGroup-sizing-sm" required>'+
                                        '</div>';
                                        }
                                        if(!data[i].choice3==0){
                                        html += '<div class="input-group input-group-sm mb-3">'+
                                            '<div class="input-group-prepend">'+
                                                '<span class="input-group-text" id="inputGroup-sizing-sm">Choice 3</span>'+
                                            '</div>'+
                                            '<input type="text" class="form-control" name="choice3" value="'+data[i].choice3+'" aria-describedby="inputGroup-sizing-sm" required>'+
                                        '</div>';
                                        }
                                        html += '<div class="input-group input-group-sm mb-3">'+
                                            '<div class="input-group-prepend">'+
                                                '<span class="input-group-text" id="inputGroup-sizing-sm">Answer Choice</span>'+
                                            '</div>'+
                                            '<input type="text" class="form-control" name="answer" value="'+data[i].answer+'" aria-describedby="inputGroup-sizing-sm" required>'+
                                        '</div>'+
                                        '<a href="javascript:;" class="btn btn-info item-edit" data="'+data[i].id+'">Edit </a>&nbsp;'+
                                        '<a href="javascript:;"  class="btn btn-danger item-delete" data="'+data[i].id+'"> Delete</a>'+
                                    '</form>'+
                                '</div>'+
                            '</div><hr>';
                    }

$('#showdata').html(html);

1 Ответ

0 голосов
/ 10 марта 2020

Поскольку вы уже установили все идентификаторы на своем модале (например, input[name=question]), вы можете установить селектор в качестве этих идентификаторов вместо имен (например, input#question):

//edit
$('#showdata').on('click', '.item-edit', function(){
        var id = $(this).attr('data');
        $('#myModal').modal('show');
        $('#myModal').find('.modal-title').text('Edit Question');
        $('#myForm').attr('action', '<?php echo base_url() ?>teachers/updateQuestion');
        $.ajax({
            type: 'ajax',
            method: 'get',
            url: '<?php echo base_url() ?>teachers/editQuestion',
            data: {id: id},
            async: false,
            dataType: 'json',
            success: function(data){
                $('input#question').val(data.question);
                $('input#choice1').val(data.choice1);
                $('input#choice2').val(data.choice2);
                $('input#choice3').val(data.choice3);
                $('input#answer').val(data.answer);
            },
            error: function(){
                alert('Could not Edit Data');
            }
        });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...