212 votes

Effacer <input type='file' /> en utilisant jQuery

Est-il possible d'effacer un <input type='file' /> valeur de contrôle avec jQuery ? J'ai essayé ce qui suit :

$('#control').attr({ value: '' }); 

Mais ça ne marche pas.

1voto

Saneem Points 121

Je suis coincé avec toutes les options ici. Voici un hack que j'ai fait et qui a fonctionné :

<form>
 <input type="file">
 <button type="reset" id="file_reset" style="display:none">
</form>

et vous pouvez déclencher la réinitialisation en utilisant jQuery avec un code similaire à celui-ci :

$('#file_reset').trigger('click');

(jsfiddle : http://jsfiddle.net/eCbd6/ )

0voto

Niraj Points 11

$("input[type=file]").wrap("<div id='fileWrapper'/>");
$("#fileWrapper").append("<div id='duplicateFile'   style='display:none'>"+$("#fileWrapper").html()+"</div>");
$("#fileWrapper").html($("#duplicateFile").html());

0voto

JEPAAB Points 29

Rendez-le asynchrone, et réinitialisez-le après que les actions souhaitées du bouton ont été effectuées.

    <!-- Html Markup --->
    <input id="btn" type="file" value="Button" onchange="function()" />

    <script>
    //Function
    function function(e) {

        //input your coding here           

        //Reset
        var controlInput = $("#btn");
        controlInput.replaceWith(controlInput = controlInput.val('').clone(true));
    } 
    </script>

0voto

Juan Points 21

J'ai essayé la plupart des techniques mentionnées par les utilisateurs, mais aucune ne fonctionne dans tous les navigateurs. Par exemple, clone() ne fonctionne pas dans FF pour les entrées de fichiers. J'ai fini par copier manuellement l'entrée du fichier, puis par remplacer l'original par celui qui a été copié. Cela fonctionne dans tous les navigateurs.

<input type="file" id="fileID" class="aClass" name="aName"/>

var $fileInput=$("#fileID");
var $fileCopy=$("<input type='file' class='"+$fileInput.attr("class")+" id='fileID' name='"+$fileInput.attr("name")+"'/>");
$fileInput.replaceWith($fileCopy);

0voto

Purusartha Points 211

J'ai réussi à faire fonctionner le mien avec le code suivant :

var input = $("#control");    
input.replaceWith(input.val('').clone(true));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X