Есть ли способ запретить клавише Enter возвращать ответ в json с другой страницы? Codeigniter Ajax - PullRequest
0 голосов
/ 16 марта 2020

Я использую ajax для своих операций Create и Update

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

{"success":false,"type":"update"}

Для визуального представления, вот то, на что это похоже после нажатия Клавиша ввода в полях ввода

enter image description here

, это мой ввод в моем представлении

 <input type="text" name="group[]" id="group" placeholder="Enter your Choice" class="form-control" />

в моем контроллере

public function addGroup(){
    $result = $this->group_model->addGroup();
    $msg['success'] = false;
    $msg['type'] = 'add';
    if($result){
        $msg['success'] = true;
    }
    echo json_encode($msg);
}


public function updateGroup(){
    $result = $this->group_model->updateGroup();
    $msg['success'] = false;
    $msg['type'] = 'update';
    if($result){
        $msg['success'] = true;
    }
    echo json_encode($msg);
}

и в модели

public function updateGroup(){
    $id = $this->input->post('txtId');
    $field = array(
    'group_name'=>$this->input->post('group')
    );
    $this->db->where('id', $id);
    $this->db->update('groups', $field);
    if($this->db->affected_rows() > 0){
        return true;
    }else{
        return false;
    }
}



public function addGroup(){
    $field = array(
        'group_name'=>$this->input->post('group'),
    );
    $this->db->insert('groups', $field);
    if($this->db->affected_rows() > 0){
        return true;
    }else{
        return false;
    }
}

Ajax

$('#btnSave').click(function(){
        var url = $('#myForm').attr('action');
        var data = $('#myForm').serialize();
        //validate form
        var group = document.getElementById('group').value;

        if(group.replace(/\s/g, "").length <=0 ) {
            swal("Submission fail!", "Enter the required field", "error");
            return false;
        }

            $.ajax({
                type: 'ajax',
                method: 'post',
                url: url,
                data: data,
                async: false,
                dataType: 'json',
                success: function(response){
                    if(response.success){
                        $('#myModal').modal('hide');
                        $('#myForm')[0].reset();
                        if(response.type=='add'){
                            var type = 'added'
                        }else if(response.type=='update'){
                            var type = 'updated'
                        }

                        swal("Success!", "You delete a Question!", "success");                          
                        showGroups();
                    }else{
                        alert('Error');
                    }
                },
                error: function(){
                    alert('Could not add data');
                }
            });

    });

Ответы [ 2 ]

0 голосов
/ 16 марта 2020
$('#myForm').submit(function(e){
    $('#btnSave').attr('disabled',true); //disable the button

    //.Your other code

    success: function(response){
            if(response.success){
                $('#btnSave').attr('disabled',false); //enable the button

            }
    }
}

При нажатии кнопки отключите событие нажатия кнопки submnit, которое является поведением по умолчанию, если вы нажимаете Entern, и включаете его снова, если вы получаете успешный ответ.

Кроме того, если вы просто хотите отключить ввод ключ, тогда вы можете сделать это так:

var keyCode = e.keyCode || e.which;
  if (keyCode === 13) { 
    e.preventDefault();
    return false;
  }
0 голосов
/ 16 марта 2020

Изменить

$('#btnSave').click(function(){
    var url = $('#myForm').attr('action');
    var data = $('#myForm').serialize();
    //validate form
    var group = document.getElementById('group').value;

    if(group.replace(/\s/g, "").length <=0 ) {
        swal("Submission fail!", "Enter the required field", "error");
        return false;
    }

        $.ajax({
            type: 'ajax',
            method: 'post',
            url: url,
            data: data,
            async: false,
            dataType: 'json',
            success: function(response){
                if(response.success){
                    $('#myModal').modal('hide');
                    $('#myForm')[0].reset();
                    if(response.type=='add'){
                        var type = 'added'
                    }else if(response.type=='update'){
                        var type = 'updated'
                    }

                    swal("Success!", "You delete a Question!", "success");                          
                    showGroups();
                }else{
                    alert('Error');
                }
            },
            error: function(){
                alert('Could not add data');
            }
        });

});

на

$('#myForm').submit(function(e){
e.preventDefault();
    var url = $('#myForm').attr('action');
    var data = $('#myForm').serialize();
    //validate form
    var group = document.getElementById('group').value;

    if(group.replace(/\s/g, "").length <=0 ) {
        swal("Submission fail!", "Enter the required field", "error");
        return false;
    }

        $.ajax({
            type: 'ajax',
            method: 'post',
            url: url,
            data: data,
            async: false,
            dataType: 'json',
            beforeSend: function(){
            $('#btnSave').attr('disabled',true);
            },
            success: function(response){
                if(response.success){
                    $('#myModal').modal('hide');
                    $('#myForm')[0].reset();
                    if(response.type=='add'){
                        var type = 'added'
                    }else if(response.type=='update'){
                        var type = 'updated'
                    }

                    swal("Success!", "You delete a Question!", "success");                          
                    showGroups();
                }else{
                    alert('Error');
                }

            },
            error: function(){
                alert('Could not add data');
            }
            $('#btnSave').attr('disabled',false);

return false; });

});

Измените кнопку на Подтвердите

Надеюсь, это поможет !!

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