Tengo un formulario de carga de archivos simple. ¿Cómo hago que se envíe automáticamente cuando se ha seleccionado un archivo? No quiero que el usuario tenga que hacer clic en el botón Enviar.
Tengo un formulario de carga de archivos simple. ¿Cómo hago que se envíe automáticamente cuando se ha seleccionado un archivo? No quiero que el usuario tenga que hacer clic en el botón Enviar.
Respuestas:
Simplemente puede llamar al submitmétodo de su formulario en onchangecaso de que ingrese su archivo.
document.getElementById("file").onchange = function() {
document.getElementById("form").submit();
};
Submit()llamada activa el submitevento jQuery , pero no activa el formulario subyacente submit(). Por supuesto, puede usar $('form')[0].submit()para golpear el elemento DOM con jQuery
Solo dígale a la entrada fileque envíe automáticamente el formulario en cualquier cambio:
<form action="http://example.com">
<input type="file" onchange="form.submit()" />
</form>
Esta solución funciona así:
onchangehace que el elemento de entrada ejecute el siguiente script, siempre que valuese modifiqueform hace referencia al formulario, que este elemento de entrada es parte desubmit() hace que el formulario envíe todos los datos a la URL, como se especifica en actionVentajas de esta solución:
ids. Hace la vida más fácil, si tiene varias formas en una página html.Usando jQuery:
$('#file').change(function() {
$('#target').submit();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="target" action="destination.html">
<input type="file" id="file" value="Go" />
</form>
JavaScript con onchangeevento:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" onchange="javascript:this.form.submit();">
</form>
$('#fileInput').change(function() {
$('#myForm').submit();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<form action="upload.php" id="myForm">
<input type="file" id="fileInput">
</form>
<form id="thisForm" enctype='multipart/form-data'>
<input type="file" name="file" id="file">
</form>
<script>
$(document).on('ready', function(){
$('#file').on('change', function(){
$('#thisForm').submit();
});
});
</script>
Esta es mi solución de carga de imágenes, cuando el usuario seleccionó el archivo.
Parte HTML:
<form enctype="multipart/form-data" id="img_form" method="post">
<input id="img_input" type="file" name="image" accept="image/*">
</form>
JavaScript:
document.getElementById('img_input').onchange = function () {
upload();
};
function upload() {
var upload = document.getElementById('img_input');
var image = upload.files[0];
$.ajax({
url:"/foo/bar/uploadPic",
type: "POST",
data: new FormData($('#img_form')[0]),
contentType:false,
cache: false,
processData:false,
success:function (msg) {}
});
};
Pruebe el siguiente código con jquery:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<script>
$(document).ready(function(){
$('#myForm').on('change', "input#MyFile", function (e) {
e.preventDefault();
$("#myForm").submit();
});
});
</script>
<body>
<div id="content">
<form id="myForm" action="action.php" method="POST" enctype="multipart/form-data">
<input type="file" id="MyFile" value="Upload" />
</form>
</div>
</body>
</html>
Para aquellos que usan .NET WebForms, puede que no se desee enviar una página completa. En su lugar, use la misma onchangeidea para que javascript haga clic en un botón oculto (por ejemplo, <asp: Button ...) y el botón oculto puede quitarle el resto. Asegúrate de que estás haciendo un display: none;botón y no Visible="false".
HTML
<form id="xtarget" action="upload.php">
<input type="file" id="xfilename">
</form>
JAVASCRIPT PURO
<script type="text/javascript">
window.onload = function() {
document.getElementById("xfilename").onchange = function() {
document.getElementById("xtarget").submit();
}
};
</script>
<form action="http://example.com">
<input type="file" onchange="Submit()" />
</form>
<script>
// it will submit form 0 or you have to select particular form
document.getElementsByTagName("form")[0].submit();
</script>
Puede poner este código para que su código funcione con una sola línea de código
<input type="file" onchange="javascript:this.form.submit()">
Esto cargará el archivo en el servidor sin hacer clic en el botón Enviar