[post modifié en totalité le 22 novembre 2011 à 08h48]
Bonjour chers Alsanautes.
Je suis développeur débutant et je suis autodidacte. J'ai expliqué mon problème il y a deux jours et comme je n'ai pas de réponse, je reformule en totalité la difficulté que je rencontre.
J'ai un formulaire avec un input de type file. Le comportement normal est l'ouverture d'une fenêtre permettant d'aller chercher le fichier sur le disque dur lorsque l'on clique sur le bouton parcourir ou sur le champ lui même MAIS PAS SUR LE LABEL CORRESPONDANT.
Je souhaite justement pallier à cette lacune en rendant mon label cliquable pour lancer la fenêtre de recherche de fichier. A terme, je dois masquer l'élément de type input file (display : none) pour des raisons esthétiques.
Pour ce faire, je simule le clic sur l'élément parcourir grâce à un trigger lancé lors du clic sur le label. Cela fonctionne (le champ de type file contient bien le chemin). Par contre, sous IE, lorsque je valide le formulaire, il ne se passe rien et le champ se vide. Sur FF et Chrome, le fichier est bien envoyé.
Quelqu'un aurait-il une idée sur une solution, s'il y en a une ou peut être n'est-il tout simplement pas possible de se passer du clic direct sur le bouton parcourir sous IE.
Voici le code exemple :
Formulaire :
Code Javascript
Code PHP (affichage des données POST et FILES)
Modifié par gemcod (22 Nov 2011 - 16:23)
Bonjour chers Alsanautes.
Je suis développeur débutant et je suis autodidacte. J'ai expliqué mon problème il y a deux jours et comme je n'ai pas de réponse, je reformule en totalité la difficulté que je rencontre.
J'ai un formulaire avec un input de type file. Le comportement normal est l'ouverture d'une fenêtre permettant d'aller chercher le fichier sur le disque dur lorsque l'on clique sur le bouton parcourir ou sur le champ lui même MAIS PAS SUR LE LABEL CORRESPONDANT.
Je souhaite justement pallier à cette lacune en rendant mon label cliquable pour lancer la fenêtre de recherche de fichier. A terme, je dois masquer l'élément de type input file (display : none) pour des raisons esthétiques.
Pour ce faire, je simule le clic sur l'élément parcourir grâce à un trigger lancé lors du clic sur le label. Cela fonctionne (le champ de type file contient bien le chemin). Par contre, sous IE, lorsque je valide le formulaire, il ne se passe rien et le champ se vide. Sur FF et Chrome, le fichier est bien envoyé.
Quelqu'un aurait-il une idée sur une solution, s'il y en a une ou peut être n'est-il tout simplement pas possible de se passer du clic direct sur le bouton parcourir sous IE.
Voici le code exemple :
Formulaire :
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" media="screen" href="css.css" type="text/css" />
<script type="text/javascript" src="jquery-1.7.js"></script>
<script type="text/javascript" src="print.js"></script>
</head>
<body>
<form method="post" action="recup.php" enctype="multipart/form-data" >
<p><label for="fichier" id="choisirFichier">Choisir un fichier</label> <input type="file" name="fichier" id="fichier"/></p>
<p><label for="qte">Quantité</label> <input type="text" name="qte" id="qte" value="10"/></p>
<p><input type="submit" value="ok"/></p>
</form>
<p id="nomFichier">Aucun fichier choisi</p>
</body>
</html>
Code Javascript
$(function(){
$('#fichier').live("change", function (e) {
var val=$(this).val();
$("#nomFichier").html(val);
});
$('#choisirFichier').click(function(){
$('#fichier').trigger('click'); return false;
});
});
Code PHP (affichage des données POST et FILES)
<pre>
<?php
echo '<h2>POST</h2>';
print_r($_POST);
echo '<h2>FICHIER</h2>';
print_r($_FILES);
?>
</pre>
Modifié par gemcod (22 Nov 2011 - 16:23)