IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

input de type file bug


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 853
    Par défaut input de type file bug
    Bonjour,

    Voici le code source de ma page Web :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <!DOCTYPE HTML>
    <html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>Test</title>
     
    	<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
        <link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css"> -->
     
    	<!-- <link rel="stylesheet" href="bootstrap/css/bootstrap.css"> -->
    	<!-- <link rel="stylesheet" href="bootstrap/css/bootstrap-responsive.css"> -->
    </head>
     
    <body>
    	<form class="well" action="upload.cgi" target="iframecfg" method="post" enctype="multipart/form-data">
    		<fieldset>
    			<legend>Upload fichier</legend>
     
    			<div class="input-append">
    				<input class="hide" type="file" name="configFile_fileBox" id="configFile_fileBox"/>  
     
    				<input class="span2" id="configFile_fileBox_textBox" type="text">
    				<button id="configFile_fileBox_button" class="btn" type="button">Parcourir...</button>
    			</div>
     
    			<div class="input-append">
    				<button type="submit" class="btn btn-primary">Envoyer</button>
    			</div>
    		</fieldset>
    	</form>
     
    	<script src="http://twitter.github.com/bootstrap/assets/js/jquery.js"></script>
    	<script src="http://twitter.github.com/bootstrap/assets/js/bootstrap.js"></script>
     
    	<!-- <script src="jquery/jquery-1.9.1.js"></script> -->
    	<!-- <script src="bootstrap/js/bootstrap.js"></script> -->
     
    	<script type="text/javascript">
    	$("#configFile_fileBox_button").click(function(){
    		$("#configFile_fileBox").click();
    	});
    	$("#configFile_fileBox").change(function(){
    		$("#configFile_fileBox_textBox").val($(this).val());
    	});
    	</script>
    </body>
    </html>
    Lorsque je clic sur le bouton "Parcourir...", la fenêtre de sélection de fichier s'ouvre sur tous les navigateurs sauf sous opéra : y a t-il une solution pour que ça fonctionne aussi sous opéra 12.15 ?

    Pour la partie javascript, j'utilise jQuery mais je ne pense pas que le problème vienne de l'utilisation de ce framework.


    merci d'avance,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 853
    Par défaut
    Si je ne mets pas classe "hide" à l'input de type file, ça fonctionne : mais que faire alors de cet élément pour qu'il n'apparaisse pas sur la page ?

    J'ai trouvé un site avec un système qui marche sous opéra mais je n'arrive pas à voir comment il fait :
    http://jasny.github.io/bootstrap/jav...tml#fileupload


    En faisant ça, ça a l'air de fonctionner mais je ne suis pas sure à 100% que ça soit la meilleure méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="file" style="visibility:hidden;width:0;height:0;margin:0;padding:0;border:none;" name="configFile_fileBox" id="configFile_fileBox"/>

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Par défaut
    Avec la classe hide de bootstrap (display:none) cela va également poser un problème sur IE8 et safari.

    La solution consiste à laisser l'élément visible mais de le sortir du viewport:

    Une des solutions possible:
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #myFileInput{
    position: absolute;
    top: -200px;
    }

    car le problème de visibility:hidden, est que l'élément reste en place dans la page, ce qui peut poser des problèmes d'affichage.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 853
    Par défaut
    ok, merci, je vais partir sur cette solution alors

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 205
    Par défaut
    Bonjour,
    tu peux également jouer sur la propriété opacity comme dans l'exemple que tu indiques.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 853
    Par défaut
    oki
    => vous arrivez à voir quelle méthode est utilisée dans le lien cité précédemment ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 853
    Par défaut
    J'ai un problème : sous IE8, le fichier n'est pas envoyé (a priori c'est une protection pour ne pas que des fichiers soient envoyés sans l'approbation de l'utilisateur)

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    => vous arrivez à voir quelle méthode est utilisée dans le lien cité précédemment ?
    Ben oui, l'opacité zéro. C'est la technique habituelle.
    En principe, un élément en display: none n'existe juste pas, et un élément en visibility: hidden est transparent aux évènements du pointeur (souris ou touch) et ne déclenchera donc pas la pop-up de sélection de fichier.

    Reste l'opacité zéro, fonctionne comme une opacité partielle, sauf que l’élément est visuellement entièrement transparent. C'est logique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 853
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 853
    Par défaut
    oki,

    En farfouillant, je crois avoir compris : il faut que la <input type="file"> soit positionnée devant le bouton apparent.
    => ils ont mis le bouton + la <input type="file"> dans un <span> et ils ont agrandi la taille de la <input type="file"> de façon à ce que le bouton de celle-ci soit super grand (il déborde du span) : comme ça, lorsqu'on essaie de cliquer sur le bouton apparent, on click en réalité sur le bouton de la <input type="file"> (ce n'est pas du tout le même principe que j'ai décrit : lancement d'un event click sur la <input type="file"> lorsqu'on click sur le bouton apparent).

    => ce système permet de résoudre le problème sous IE8 (certaines personnes disent que ce n'est pas un bug mais que ça devrait être le fonctionnement normal pour tous les navigateurs)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Input de type File sans le champ ?
    Par DemonKN dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 11/02/2010, 13h59
  2. styler un input de type file
    Par Methode dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 11/01/2007, 23h11
  3. createElement input de type file : pb d'upload de fichier
    Par firejocker dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 16/02/2006, 14h08
  4. Pb avec un input de type file
    Par stecos dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2005, 10h03
  5. chemin d'un input de type file
    Par sbbn1 dans le forum ASP
    Réponses: 2
    Dernier message: 05/04/2004, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo