'call again to function change function jquery
I´m traying to create one function in jquery for upload imgs to my server with laravel, when my img it´s uploaded create a div with information for this img and buttons to show it and delete it.
My problem it´s that when i delete my img, show again my input file but if i select another img, my event not start. Only i can execute once.
my code its:
// create varaible that contain value input
$("#dni_cliente").on("change", function(e){
console.log("entro");
data = new FormData();
let token = $("meta[name='csrf-token']").attr("content");
data.append('file', $("#dni_cliente")[0].files[0]);
data.append('_token', token);
$(".dni").addClass('borderClass');
$.ajax({
url: document.location.origin+'/admin/precontratos/precontratos/dataClientImages',
method: 'POST',
processData: false,
contentType: false,
data: data,
success: function(response){
uploadFileDni();
$("#imageDniClient").attr('src', response);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
});
/** FUNCTIONS BLOCK TO PROGRESS BAR */
function uploadFileDni() {
var dni = $("#dni_cliente")[0].files[0];
if(dni != null ){
let token = $("meta[name='csrf-token']").attr("content");
let url = document.location.origin+'/admin/precontratos/precontratos/dataClientImages';
var formdata = new FormData();
formdata.append("file", dni);
formdata.append('_token', token);
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", progressDni, false);
ajax.addEventListener("load", completeHandler, false);
ajax.addEventListener("error", errorHandler, false);
ajax.addEventListener("abort", abortHandler, false);
ajax.open("POST", url);
ajax.send(formdata);
}
}
function progressDni(event) {
var dni = $("#dni_cliente")[0].files[0];
if(dni != null){
$("#container_files").removeClass('d-none');
$("#container_files").append(`
<div class="row justify-content-center row_dni">
<div class="col-md-4 file_name align-items-center text-center">${dni.name}</div>
<div class="col-md-4 bg-white progress justify-content-center align-items-center text-center">
</div>
<div class="col-md-4 actions align-items-center text-center">
<i class="fas fa-times ml-3 text-danger fa-2x delete_dni"></i>
<i class="far fa-eye text-danger ml-3 fa-2x show_dni"></i>
</div>
</div>
<hr id="hr_id">
`);
$(".progress").append(`
<progress class="d-none progressBarDni" data-text="" value="0" max="100" style="width: 350px; height: 35px;"></progress>
<h3 id="status"></h3>
<p id="loaded_n_total"></p>
`);
$(".dni_cliente").hide();
$(".progressBarDni").removeClass('d-none');
var percent = (event.loaded / event.total) * 100;
$(".progressBarDni").val(Math.round(percent));
$(".progressBarDni").attr("data-text", Math.round(percent) + "%")
$("#status").hide();
$(".show_dni").on('click', function(){
$("#modalClientDniImages").modal('show');
});
$(".delete_dni").on('click', function(){
$(".row_dni").empty();
$(".dni_cliente").removeClass('borderClass');
$("#hr_id").remove();
$(".dni_cliente").show();
});
}
}
HTML
<div class="col-md-3 text-center">
<div class="file-drop-area dni dni_cliente mb-3">
<span class="fake-btn text-dni"><b>IMAGEN DNI ANVERSO</b></span>
<input class="file-input" type="file" name="fotos[dni1]" id="dni_cliente" accept="image/*">
</div>
</div>
<div class="col-md-3 text-center">
<div class="file-drop-area dni2 dni2_cliente mb-3">
<span class="fake-btn text-dni"><b>IMAGEN DNI REVERSO</b></span>
<input class="file-input" type="file" name="fotos[dni2]" id="dni2_cliente" accept="image/*">
</div>
</div>
<div class="col-md-3 text-center">
<div class="file-drop-area cartilla cartilla_cliente mb-3">
<span class="fake-btn text-cartilla" style="font-size: 0.7em;"><b>IMAGEN CARTILLA O CERTIFICADO TITULARIDAD</b></span>
<input class="file-input" type="file" name="fotos[cartilla]" id="cartilla_cliente" accept="image/*">
</div>
</div>
<div class="col-md-3 text-center">
<div class="file-drop-area pension certificado_cliente mb-3">
<span class="fake-btn text-pension" style="font-size: 0.7em;"><b>IMAGEN CERTIFICADO DE PENSIÓN O INGRESOS</b></span>
<input class="file-input" type="file" name="fotos[pension]" id="certificado_cliente" accept="image/*">
</div>
</div>
PD: i trayed .live function but my jquery version it´s not supported because webrowser return that it´s not a function
thanks for readme and help me
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
