У меня есть форма вида:
<form type="multipart/form-data">
<input type="file" name="text">
</form>
Нужно, что бы при выборе пользователем одного файла, подгружалось новое поле для загрузки еще одного файла. Проблема в том, что с данным кодом событие change
отслеживается только на первом input
формы. То есть новые поля формы добавляются на страницу только в том случае, если изменять 1ый input.
var inputs = $('#formId :input');
$('#formId :input').change(function () {
if (fileInputs.length < 4) {
var content = '<input type="file" name="text' +
(fileInputs.length + 1) + '">';
$('#formId').append(content);
}
$('#formId').on("change", 'input[type="file"]', function () {
var fileInputs = $('#formId input[type="file"]');
if (fileInputs.length < 4) {
var content = '<input type="file" name="text' + (fileInputs.length + 1) + '">';
$('#formId').append(content);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="formId" type="multipart/form-data">
<input type="file" name="text">
</form>
Тут дело в делегировании при назначении обработчика события change
. В коде ответа, обработчик назначается элементу #formId
, с указанием, что выполнять его надо для событий, которые произошли на элементах input[type="file"]
. В таком случае не важно, существуют эти инпуты в момент назначения обработчика или будут созданы позднее.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется несколько div c class='card'как реализовать в js, чтобы при нажатии на одном из элементов происходило событие какое-либо? Вот ниже моя реализация...
Хочу на js сравнить два массива и выстроить select и выделить все option которые соответсвуют условиюВот код: