Changer le " Pas de fichier choisi":

j'ai un bouton "Choisir fichier" comme suit (j'utilise Jade mais il devrait être le même que Html5):

 input(type='file', name='videoFile')

dans le navigateur ceci affiche un bouton avec un texte à côté de lui"aucun fichier choisi". Je voudrais changer la "Aucun fichier choisi" texte à autre chose, comme "Pas de vidéo choisie" ou "Choisir une vidéo s'il vous plaît". J'ai suivi les premières suggestions ici:

Je ne veux pas voir 'no file chosen' pour un champ d'entrée de fichier

Mais cela n'a pas changé le texte:

 input(type='file', name='videoFile', title = "Choose a video please")

quelqu'un peut-il m'aider à trouver le problème?

52
demandé sur Community 2013-04-14 20:48:59

15 réponses

je suis assez sûr que vous ne pouvez pas changer les étiquettes par défaut sur les boutons, ils sont codés en dur dans les navigateurs (chaque navigateur rendant les sous-titres des boutons à sa propre façon). Vérifier ce article de style bouton

9
répondu Jeremy Thille 2013-04-14 16:59:56

Masquer l'entrée avec css, ajouter une étiquette et l'affecter à la touche input. le label sera cliquable et lorsqu'il sera cliqué, il activera la boîte de dialogue Fichier.

<input type="file" id="files" class="hidden"/>
<label for="files">Select file</label>

alors style l'étiquette comme un bouton si vous voulez.

147
répondu SKManX 2013-07-30 14:06:36

http://jsfiddle.net/ZDgRG /

voir lien ci-dessus. J'utilise css pour cacher le texte par défaut et j'utilise une étiquette pour montrer ce que je veux:

<div><input type='file' title="Choose a video please" id="aa" onchange="pressed()"><label id="fileLabel">Choose file</label></div>

input[type=file]{
    width:90px;
    color:transparent;
}

window.pressed = function(){
    var a = document.getElementById('aa');
    if(a.value == "")
    {
        fileLabel.innerHTML = "Choose file";
    }
    else
    {
        var theSplit = a.value.split('\');
        fileLabel.innerHTML = theSplit[theSplit.length-1];
    }
};
15
répondu Tommy Steimel 2013-06-20 14:38:07

à droite, il n'y a aucun moyen de supprimer ce 'no file choosen', même si vous avez une liste de fichiers pré-upload.

la solution la plus simple que j'ai trouvée (et fonctionne sur IE, FF, CR) est la suivante

  1. masquer votre entrée et Ajouter un bouton "fichiers
  2. ensuite, appelez le bouton "files" et demandez-lui de lier fileupload (j'utilise JQuery dans cet exemple)

$('.addfiles').on('click', function() { $('#fileupload').click();return false;});
<button class="addfiles">Add Files</button>
<input id="fileupload" type="file" name="files[]" multiple style='display: none;'>

C'est fait, fonctionne parfaitement :)

Fred

9
répondu Frederic 2017-02-23 08:14:45

mais si vous essayez de supprimer ce tooltip

<input type='file' title=""/>

ça ne marchera pas. Voici mon petit truc pour travailler ça, essayer le titre avec un espace. Il va travailler.:)

<input type='file' title=" "/>
8
répondu simon 2015-05-27 10:26:41

l'Essayer c'est juste un truc

<input type="file" name="uploadfile" id="img" style="display:none;"/>
<label for="img">Click me to upload image</label>

Comment ça marche

c'est très simple. L'élément étiquette utilise la balise" for " pour faire référence à l'élément d'un formulaire par id. Dans ce cas, nous avons utilisé "img" comme clé de référence entre eux. Une fois qu'il est fait, chaque fois que vous cliquez sur l'étiquette, il déclenche automatiquement l'élément du formulaire click event qui est l'élément du fichier click event dans notre cas. Nous faisons alors l'élément de fichier invisible en utilisant display: none et non visibilité: caché pour ne pas créer d'espace vide.

Profiter de codage

8
répondu Odin 2016-12-19 08:52:33

$(function () {
     $('input[type="file"]').change(function () {
          if ($(this).val() != "") {
                 $(this).css('color', '#333');
          }else{
                 $(this).css('color', 'transparent');
          }
     });
})
input[type="file"]{
    color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="file" name="app_cvupload" class="fullwidth input rqd">
6
répondu Ifeanyi Chukwu 2015-04-30 13:04:41

quelque chose comme ça pourrait marcher

input(type='file', name='videoFile', value = "Choose a video please")
3
répondu Kevin Lynch 2013-04-14 17:04:50
 .vendor_logo_hide{
      display: inline !important;;
      color: transparent;
      width: 99px;
    }
    .vendor_logo{
      display: block !important;
      color: black;
      width: 100%; 
    }

$(document).ready(function() {
  // set text to select company logo 
  $("#Uploadfile").after("<span class='file_placeholder'>Select Company Logo</span>");
  // on change
  $('#Uploadfile').change(function() {
    //  show file name 
    if ($("#Uploadfile").val().length > 0) {
      $(".file_placeholder").empty();
      $('#Uploadfile').removeClass('vendor_logo_hide').addClass('vendor_logo');
      console.log($("#Uploadfile").val());
    } else {
      // show select company logo
      $('#Uploadfile').removeClass('vendor_logo').addClass('vendor_logo_hide');
      $("#Uploadfile").after("<span class='file_placeholder'>Select  Company Logo</span>");
    }

  });

});
.vendor_logo_hide {
  display: inline !important;
  ;
  color: transparent;
  width: 99px;
}

.vendor_logo {
  display: block !important;
  color: black;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<input type="file" class="vendor_logo_hide" name="v_logo" id='Uploadfile'>
<span class="fa fa-picture-o form-control-feedback"></span>

<div>
  <p>Here defualt no choose file is set to select company logo. if File is selected then it will displays file name</p>
</div>

3
répondu Raj Chavan 2017-07-31 12:09:01
<div class="field">
    <label class="field-label" for="photo">Your photo</label>
    <input class="field-input" type="file" name="photo"  id="photo" value="photo" />
</div>

et le css

input[type="file"]
{ 
   color: transparent; 
   background-color: #F89406; 
   border: 2px solid #34495e; 
   width: 100%; 
   height: 36px; 
   border-radius: 3px; 
}
1
répondu Ir Calif 2016-05-13 02:28:35

vous pouvez l'essayer de cette façon:

<div>
    <label for="user_audio" class="customform-control">Browse Computer</label>
    <input type='file' placeholder="Browse computer" id="user_audio"> <span id='val'></span>
 <span id='button'>Select File</span>
</div>

pour afficher le fichier sélectionné:

$('#button').click(function () {
    $("input[type='file']").trigger('click');
})

$("input[type='file']").change(function () {
    $('#val').text(this.value.replace(/C:\fakepath\/i, ''))
    $('.customform-control').hide();
})

merci à @unlucky13 pour avoir sélectionné le nom de fichier

voici le violon de travail:

http://jsfiddle.net/eamrmoc7 /

1
répondu Satyadev 2016-10-03 08:52:05

HTML

  <div class="fileUpload btn btn-primary">
    <label class="upload">
      <input name='Image' type="file"/>
    Upload Image
    </label>
  </div>

CSS

input[type="file"]
{
  display: none;
}
.fileUpload input.upload 
{
    display: inline-block;
}

Note: Btn btn-primary est une classe de bouton bootstrap. Cependant, le bouton peut avoir l'air en position. J'espère que vous pouvez le réparer par css inline.

1
répondu Naeem Moavia Siddiqui 2017-03-22 16:13:19

Cela va vous aider à changer le nom pour "pas de fichier choisir pour Sélectionner un profil d'image",

<input type='file'id="files" class="hidden"/>  
<label for="files">Select profile picture</label>
0
répondu 2017-04-06 05:44:55

il suffit de changer la largeur de l'entrée. Autour de 90px

<input type="file" style="width: 90px" />

0
répondu nwillo 2017-11-02 10:26:04

utilisant l'étiquette avec le texte de l'étiquette modifié

<input type="file" id="files" name="files" class="hidden"/>
<label for="files" id="lable_file">Select file</label>

ajouter jquery

<script>
     $("#files").change(function(){
        $("#lable_file").html($(this).val().split("\").splice(-1,1)[0] || "Select file");     
     });
</script>
0
répondu kelvin kantaria 2018-08-02 14:12:05