В сети довольно много статей по этой теме, но нигде нет 100% рабочего скрипта, к примеру, если он и работает на добавление элементов, то в нем нет ограничения на вставку элементов, а это довольно часто необходимо скажем при динамическом добавлении полей для прикрепления файлов к сообщению. Другая часть подобных скриптов не поддерживает всеми любимый Internet Explorer, в общем, я решил написать свой скрипт, в нем реализована поддержка всех браузеров, а также есть ограничение на добавление элементов.

Начнем с HTML структуры:

<div id="blockFile">
	<input class="file" type="file" name=""/>
	<a href="javascript://" onclick="addItem (this)" id="add">+</a>
</div>

Функция добавления элемента:

index – счетчик элементов с классом filen,

maxItem – максимальное количество добавляемых элементов, при значении 0 ограничение будет отключено.

function addItem() {
    maxItem = 10;
    index = $("#blockFile .file").length
    /*
     *Если index превышает допустимое количество элементов то скрываем кнопку *добавления элемента иначе добавляем элемент
     */
    if (maxItem != 0 && index >= maxItem) {
        $('#add').css({
            'display': 'none'
        })
    } else {
        $('#blockFile').append('\
// Тут html добавляемого элемента
<div class="container" >\
<input class="file" type="file" name=""/>\
<a href="javascript:\/\/" onclick="deleteItem(this)">х</a>\
</div>\
');
    }
}

Функция удаления элемента:

function deleteItem(element) {
    // Удаляем элемент
    $(element).parent().remove()
    // Если кнопка добавления элемента скрыта, то показываем ее.
    if ($('#adder:hidden')) {
        $('#add').css({
            'display': 'inline-block'
        })
    }
}