B'soir, camarades canards, je me retourne vers vous car je coince pas mal sur mon Javascript
En effet, j'ai un formulaire et je souhaite vérifier à chaque action de l'utilisateur (bouton radio coché, image sélectionnée, champ rempli) les informations dans leur intégralité afin d'afficher ou non le bouton de validation.
Aussi, je passe donc par une succession de boucle dont une qui appelle une autre fonction, celle de vérification des fichiers. A un moment, pour la vérification de la taille/poids de l'image, je crée un objet image puis j'utilise la méthode onload qui appelle une fonction.
Problème, ce qui se passe dans cette fonction ne se déroule qu'une fois ma fonction initiale terminée. J'image que c'est lié à la lecture de l'image, mais ça m'empêche de récupérer la bonne valeur de ma variable dans ma boucle vu que celle-ci ne s'incrémente qu'une fois la fonction terminée.
Je ne sais pas si mes explications sont claires, voici mon code Js au cas où :
Code:
var champ_valide = 0;
function recuperer_extension(input)
{
if (input!='')
{
var nom_fichier = input;// on récupere le chemin complet du fichier
var extension = nom_fichier.split(".")[1];
extension = nom_fichier.substring(nom_fichier.indexOf(".")+1);
extension = extension.toLowerCase(); //on uniforme les caractères en minuscule au cas ou cela aurait été écris en majuscule
return extension; // on renvoi l'extension vers la fonction appelante
}
}
function verifier_fichier(input, mode){
// on appelle la fonction permettant de récuperer l'extension du fichier envoyé et on stocke le résultat dans une variable
var extension = recuperer_extension(input.value);//
var erreur = "";
var mode = mode;
//on vérifie si l'extension récupérée est valide ou non
if(extension!="jpg" && extension!="jpeg" && extension!="gif" && extension!="png" && extension!=undefined){
erreur += "L'extension "+extension+" n'est pas valide.\n Veuillez utiliser des images au format JPEG/GIF/PNG uniquement.";
if(mode == 0)
{
alert(erreur);
}
}
else{
var poids = input.files[0].size;
if(poids > 51200){// si le poids de l'image dépasse 1 Mo
erreur += "Le poids de votre image est trop élevé.\n";
}
var fichier = input.files[0];
window.URL = window.URL || window.webkitURL;
img = new Image();
img.onload = function(){
var bool = bool;
if(img.width >= 100 && img.height >= 100){
erreur += "La résolution de votre image est incorrecte.";
}
if(erreur!='' && mode==0) {
alert(erreur);
}
else if(erreur!='' && mode==1) {
alert("test");
}
else if(erreur=='' && mode==1) {
champ_valide++;
alert(champ_valide);
//alert(input.id + "\n" + champ_valide);
}
}
img.src = window.URL.createObjectURL(fichier);
}
}
function afficher_bouton_upload() {
if(document.form1.mode[0].checked)
{
champ_valide = 0;
var test = 0;
if(form1.question.value!='') {
test++;
}
var champs = document.getElementById("compteur").value;
var i=1;
while(i<=champs) {
if(document.getElementById('fichier'+i).value!=0)
{
var temp = document.getElementById('fichier'+i);
verifier_fichier(temp, "1");
}
i++;
}
alert(test + " " + champ_valide + " " + champs);
if(test==1 && champ_valide==champs) {
document.getElementById("validation").style.display = "block";
}
}
}