Problems cloning a field using Jquery

Question:

I'm trying to clone an object using Jquery, but the width of the cloned field isn't as expected.

HTML

<table class="table table-responsive" id="tableAulas">
                    <thead>
                        <tr>
                            <th>Disciplina</th>
                            <th>Professor</th>
                            <th>Carga Horária</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>

                            <td>
                                <select class="form-control bselect" name="professor[]">
                                    <option>Select</option>
                                </select>
                            </td>

                        </tr>

                    </tbody>
                </table>
                <p class="text-right">
                    <a href="javascript:void(0)" class="btn btn-sm btn-success" id="addRowAula"><i class="fa-plus"></i> Adicionar campo</a>
                    <a href="javascript:void(0)" class="btn btn-sm btn-danger" id="removeRowAula" style="display:none;" ><i class="fa-minus"></i> Remover último campo</a>
                </p>

JS

    $(".bselect").select2({allowClear: true}).on('select2-open', function()
    {$(this).data('select2').results.addClass('overflowhidden').perfectScrollbar();});

    $('#addRowAula').on('click', function(){

    console.log('add row');
    var html ='<tr> <td> <select class="form-control bselect" name=""> <option>Select</option> </select> </td></tr>';

    $("#tableAulas > tbody").append(html);
    showRowButton();
    });
        $('#removeRowAula').on('click', function(){
        $('#tableAulas tr:last').remove();
        showRowButton();
     });
    function showRowButton(){
        var rowCount = $('#tableAulas >tbody > tr').length;
        if(rowCount > 1){
            $('#removeRowAula').show();
        }else{
            $('#removeRowAula').hide();
        }
    }

I also left the example on the link: https://jsfiddle.net/8bs8onLc/

Answer:

If you want the width of the cloned field to be the same as the original field, one way to do this is to include a style in the code that adds the field.

Replace this line:

var html ='<tr> <td> <select class="form-control bselect" name=""> <option>Select</option> </select> </td></tr>';

For this:

var html ='<tr> <td> <select style="width: '+$(".select2-selection").outerWidth()+'px;" class="form-control bselect" name=""> <option>Select</option> </select> </td></tr>';

The $(".select2-selection").outerWidth() takes the full width of the original field by the .select2-selection class.

See your updated JSFiddle .

Scroll to Top