简体   繁体   中英

How to dynamically Add/Remove file type input field using jquery?

I cannot remove input field dynamically, I can add field but my remove option is not working. I am using jquery for dynamically add/remove field and bootstrap 3 for my layout.

Here is my markup:

    <div class="row margin-bottom">
        <div class="col-md-12 col-sm-12">
            <button type="submit" class="add-box btn btn-info"><span class="glyphicon glyphicon-plus"></span> Add More Fields</button>
        </div>
    </div>
    <?php $attributes = array('class' => 'form-horizontal', 'role' => 'form'); echo form_open_multipart('config/upload_image', $attributes);?>
        <div class="text-box form-group">
            <div class="col-sm-4"><input type="file" class="" name="txtImage[]" id="imageinput"/></div>
        </div>
        <div class="form-group">
            <div class="col-sm-2">
               <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-upload"></span> Upload</button>
            </div>
        </div>
    <?php echo form_close();?>

Here is my jquery code:

     $(document).ready(function(){
     $('.add-box').click(function(){
        var n = $('.text-box').length + 1;
        if(n > 5)
        {
            alert('Only 5 Savy :D');
            return false;
        }
        var box_html = $('<div class="text-box form-group"><div class="col-sm-4"><input type="file" class="" name="txtImage[]" id="imageinput'+ n +'"/></div><div class="col-sm-2"><button type="submit" class="remove-box btn btn-danger btn-sm"><i class="fa fa-minus-circle fa-lg"></i></button></div></div>');
        $('.text-box:last').after(box_html);
        box_html.slidedown('slow');
    });

    $('.form-horizontal').on('click', '.remove-box', function(){
            $(this).parent().remove();
        return false;
    });

});

The error is in the remove button click event handler. You need to remove the closest form group rather than the immediate parent:

$('.form-horizontal').on('click', '.remove-box', function(){
    $(this).closest(".form-group").remove();
    return false;
});

check this bootply for a working example: http://www.bootply.com/x8n3dQ6wDf

EDIT

for animation on remove you can use jQuery slideUp like this:

$('.form-horizontal').on('click', '.remove-box', function(){
    var formGroup = $(this).closest(".form-group");
    formGroup.slideUp(200, function() {
        formGroup.remove();
    });
    return false;
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM