Déclencher un input file par une commande Javascript

Résolu/Fermé
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 - Modifié par jordane45 le 24/03/2015 à 00:27
 Utilisateur anonyme - 24 mars 2015 à 10:28
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 :

<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.
A voir également:

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;"/>
1
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
24 mars 2015 à 10:14
Un grand merci pour cet ajout : return false.
Le problème est effectivement réglé. Tout marche correctement.
Je n'avais pas bien compris l'action de l'input = image
0
Utilisateur anonyme > janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015
24 mars 2015 à 10:28
De rien :-)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 24/03/2015 à 09:23
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
0
janmar Messages postés 148 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 29 août 2015 3
24 mars 2015 à 10:16
Merci pour ta contribution.
La réponse est ci-dessus, ça marche parfaitement.
Bien cordialement
0