У меня есть форма вида:
<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"]
. В таком случае не важно, существуют эти инпуты в момент назначения обработчика или будут созданы позднее.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Имеется несколько div c class='card'как реализовать в js, чтобы при нажатии на одном из элементов происходило событие какое-либо? Вот ниже моя реализация...
Хочу на js сравнить два массива и выстроить select и выделить все option которые соответсвуют условиюВот код: