Я пытаюсь ограничить количество дополнительных полей ввода формы, которые пользователь может динамически добавить в форму загрузки файла, до трех. Форма загружается одним статическим полем ввода, а через javascript можно добавлять дополнительные поля кнопкой добавления. или удалите дополнительные поля ввода формы с помощью кнопки удаления. Ниже HTML в его статической форме.
<fieldset>
<legend>Upload your images</legend>
<ol id="add_images">
<li>
<input type="file" class="input" name="files[]" />
</li>
</ol>
<input type="button" name="addFile" id="addFile" value="Add Another Image" onclick="window.addFile(this);"/>
</fieldset>
С помощью javascript я хотел бы создать функцию, в которой подсчитывается количество дочерних
элементов, а если число равно трем, кнопка «Добавить другое изображение» становится недоступной. Кроме того, если в форме есть три элемента , то пользователь - с помощью кнопки удаления - удаляет дочерний элемент , после чего кнопка «Добавить другое изображение» снова становится активной.
Думаю, мне не хватает некоторых важных строк кода. Приведенный ниже код JavaScript позволяет мне добавить только одно дополнительное поле ввода, прежде чем кнопка «Добавить другое изображение» станет недоступной. При удалении этого поля кнопкой удаления файла поле удаляется, но кнопка «Добавить другое изображение» по-прежнему отключена. Ниже я сейчас с javascript.
function addFile(addFileButton) {
var form = document.getElementById('add_images');
var li = form.appendChild(document.createElement("li"));
//add additional input fields should the user want to upload additional images.
var f = li.appendChild(document.createElement("input"));
f.className="input";
f.type="file";
f.name="files[]";
//add a remove field button should the user want to remove a file
var rb = li.appendChild(document.createElement("input"));
rb.type="button";
rb.value="Remove File";
rb.onclick = function () {
form.removeChild(this.parentNode);
}
//create the option to dispable the addFileButton if the child nodes total "3"
var nodelist;
var count;
nodelist = form.childNodes;
count = nodelist.length;
for(i = 0; i < count; i++) {
if (nodelist[i] ==3) {
document.getElementById("addFile").disabled = 'true';
}
else { //if there are less than three keep the button enabled
document.getElementById("addFile").disabled = 'false';
}
}
}