2009-09-13 12 views

Respuesta

19

http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-49531485 dice:

valor de tipo DOMString
Cuando el atributo type del elemento tiene el valor "texto", " archivo" o "contraseña", esto representa el contenido actual del control de formulario correspondiente, en un agente de usuario interactivo.

<html> 
    <head><title>...</title> 
    <script type="text/javascript"> 
     function foo() { 
     var f = document.getElementById("f1"); 
     alert(""==f.value ? "nothing selected" : "file selected"); 
     } 
    </script> 
    </head> 
    <body> 
    <form> 
     <div> 
     <input id ="f1" type="file" name="x" /> 
     </div> 
    </form> 
    <button onclick="foo()">click</button> 
    </body> 
</html> 
6

Yo uso este javascript:

var file_selected = false; 
function showNoFile() { 
    if(!file_selected) { alert('No file selected!'); } // or anything else 
} 

con este código HTML para el botón de archivo:

<input type='file' onchange="file_selected = true;" ...> 
.... 
<input type='submit' onclick='showNoFile();'> 

espero que ayude!

+0

Creo que esta es la mejor respuesta. Si desea hacer una solicitud AJAX cuando alguien elige un archivo, la función 'onchange' es lo que desea. Si simplemente usa 'onclick', se dispara una vez que se abre el cuadro de diálogo de elegir archivo, pero antes de que se elija un archivo. –

+1

no funciona en chrome ... si eliges un archivo, entonces eliges no file again, el file_selected sigue siendo verdadero, lo cual es incorrecto. –

0

Así que digamos que usted tiene algún tipo HTML y tiene una entrada de archivo personalizado de carga:

<label for="imageUploadButton"> 
<span class="btn" style="padding-left: 10px;">Click here for uploading a new picture</span> 
</label> 
<input type="file" name="avatar_picture" accept="image/gif,image/jpeg,image/png" id="imageUploadButton" style="visibility: hidden; position: absolute;"> 

Y usted desee comprobar el nombre de archivo del archivo que el usuario ha seleccionado/seleccionada:

Uso jQuery

<script type="text/javascript"> 
    $(function() { 
    $("input:file").change(function(){ 
     var fileName = $(this).val(); 
     alert(fileName); //Do with the filename whatever you want 
    }); 
    }); 
</script> 

@https://stackoverflow.com/a/5670938/2979938

Para aquellos que usan requireJS:

$("input:file").change(function() { 
    var fileName = $(this).val(); 
    alert(fileName); //Do with the filename whatever you want 
}); 
Cuestiones relacionadas