Ho un semplice modulo di caricamento file. Come faccio a inviarlo automaticamente quando è stato selezionato un file? Non voglio che l'utente debba fare clic sul pulsante Invia.
Ho un semplice modulo di caricamento file. Come faccio a inviarlo automaticamente quando è stato selezionato un file? Non voglio che l'utente debba fare clic sul pulsante Invia.
Risposte:
Puoi semplicemente chiamare il tuo modulo submit metodo in onchangecaso di input di file.
document.getElementById("file").onchange = function() {
document.getElementById("form").submit();
};
Submit()chiamata attiva l' submitevento jQuery , ma non attiva il modulo sottostante submit(). Ovviamente puoi usare $('form')[0].submit()per colpire l'elemento DOM con jQuery
Basta dire al file-input di inviare automaticamente il modulo su qualsiasi modifica:
<form action="http://example.com">
<input type="file" onchange="form.submit()" />
</form>
Questa soluzione funziona in questo modo:
onchangefa in modo che l'elemento di input esegua il seguente script, ogni volta che valueviene modificatoform fa riferimento al modulo, di cui fa parte questo elemento di inputsubmit() fa in modo che il modulo invii tutti i dati all'URL, come specificato in actionVantaggi di questa soluzione:
ids. Ti semplifica la vita, se hai diversi moduli in una pagina html.Utilizzando 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>
La soluzione più breve è
<input type="file" name="file" onchange="javascript:document.getElementById('form').submit();" />
onchange="this.form.submit()"
onchange="form.submit()"? :)
<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>
Questa è la mia soluzione di caricamento delle immagini, quando l'utente ha selezionato il file.
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) {}
});
};
Prova il codice qui sotto 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>
Per coloro che utilizzano .NET WebForms potrebbe non essere necessario inviare una pagina intera. Invece, usa la stessa onchangeidea per fare in modo che javascript faccia clic su un pulsante nascosto (ad es. <Asp: Button ...) e il pulsante nascosto può fare il resto. Assicurati di fare un display: none;pulsante e non 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>
Puoi inserire questo codice per far funzionare il tuo codice con una sola riga di codice
<input type="file" onchange="javascript:this.form.submit()">
Questo caricherà il file sul server senza fare clic sul pulsante Invia