Déclencher un input file par une commande Javascript
Résolu
janmar
Messages postés
154
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonsoir,
J'ai trouvé un truc sur un forum qui me plaît bien, mais que je n'arrive pas à maîtriser. Je cherche à déclencher un input file par le clic sur une image. J'ai deux comportements que je n'explique pas :
1°) la commande Java Script se comporte comme un bouton submit.
2°) le fichier sélectionné n'est pas envoyé.
Voici mon code :
HTML :
HTML
Le click sur l'image de fond de l'input type="image" déclenche bien l'input file d'id InputFileM et de nom "monfichier".
En cliquant sur le fichier choisi, cela équivaut à un submit et redirige sur modifs.php ???????? et le fichier n'est pas envoyé.
modifs.php
J'obtiens toujours : pas de fichier.
Quelqu'un peut-il m'aider ? merci d'avance.
EDIT : Ajout du langage dans les balises de code.
J'ai trouvé un truc sur un forum qui me plaît bien, mais que je n'arrive pas à maîtriser. Je cherche à déclencher un input file par le clic sur une image. J'ai deux comportements que je n'explique pas :
1°) la commande Java Script se comporte comme un bouton submit.
2°) le fichier sélectionné n'est pas envoyé.
Voici mon code :
HTML :
<head> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> </head>
HTML
<form method = "post" action = "modifs.php" enctype="multipart/form-data">
<input type="image" src ="<?php echo $chemin;?>" name ="Mr" alt ="Mr." style="vertical-align: middle;border:solid 1px silver;border-radius:10px; width:60px;height:60px;background-color:#CCC;" onclick="$('#InputFileM').click();"/>
<input type="file" id="InputFileM" name = "monfichier" style="visibility:hidden"/>
<label for="prenom">Prénom : </label><input class ="champs" type="text" name="prenom" style="background-color:#00FFFF;" value = "<?php echo $donnees['Prenom'];?>" /><br>
<label for="nom">Nom : </label><input class ="champs" type="text" name="nom" style="background-color:#00FFFF;" value = "<?php echo $donnees['Nom'];?>" /><br>
<INPUT class ="champs" type="submit" value="Valider vos modifications" /><?php
Le click sur l'image de fond de l'input type="image" déclenche bien l'input file d'id InputFileM et de nom "monfichier".
En cliquant sur le fichier choisi, cela équivaut à un submit et redirige sur modifs.php ???????? et le fichier n'est pas envoyé.
modifs.php
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0){
echo 'il y a un fichier ';
}else{
echo 'Il n\'y a pas de fichier';
}
J'obtiens toujours : pas de fichier.
Quelqu'un peut-il m'aider ? merci d'avance.
EDIT : Ajout du langage dans les balises de code.
2 réponses
-
Bonjour
Ce n'est pas une commande javascript qui se comporte comme un bouton submit, c'est input image.
C'est normal que l'input type = image se comporte comme un bouton submit : c'est exactement son rôle dans un formulaire
https://www.w3schools.com/tags/att_input_type.asp
Pour obtenir le comportement que tu désires, il suffit de l'empêcher de jouer ce rôle dans en ajoutant un "return false" dans son événement click :<input type="image" src ="<?php echo $chemin;?>" name ="Mr" alt ="Mr." style="vertical-align: middle;border:solid 1px silver;border-radius:10px; width:60px;height:60px;background-color:#CCC;" onclick="$('#InputFileM').click(); return false;"/> -
Bonjour,
la commande Java Script se comporte comme un bouton submit.
[...]
En cliquant sur le fichier choisi, cela équivaut à un submit et redirige sur modifs.php
Ah ?
Lequel (de code) ?
par ce que le seul code JS que je vois est :onclick="$('#InputFileM').click();"
qui revient à cliquer sur le champ de type file et de donc de faire "parcourir"
edit:les input type "image" font un submit.
https://www.w3schools.com/tags/att_input_type.asp
Par contre.. dans ton fichier PHP .. tu pourrais déjà commencer par faire des PRINT de tes variables pour voir ce qui arrive ...<?php echo "<br> POST :<br>"; print_r($_POST); echo "<br> FILES :<br>"; print_r($_FILES); if (isset($_FILES['monfichier']) && !$_FILES['monfichier']['error']){ echo "il y a un fichier "; }else{ echo "Il n'y a pas de fichier"; }
Cordialement,
Jordane