Ich habe ein einfaches Formular zum Hochladen von Dateien. Wie kann ich es automatisch senden lassen, wenn eine Datei ausgewählt wurde? Ich möchte nicht, dass der Benutzer auf die Schaltfläche Senden klicken muss.
Ich habe ein einfaches Formular zum Hochladen von Dateien. Wie kann ich es automatisch senden lassen, wenn eine Datei ausgewählt wurde? Ich möchte nicht, dass der Benutzer auf die Schaltfläche Senden klicken muss.
Antworten:
Sie können die submit
Methode Ihres Formulars bei der onchange
Eingabe Ihrer Datei einfach aufrufen .
document.getElementById("file").onchange = function() {
document.getElementById("form").submit();
};
Submit()
löst der Aufruf das jQuery- submit
Ereignis aus, löst jedoch nicht das zugrunde liegende Formular aus submit()
. Sie können natürlich verwenden $('form')[0].submit()
, um das DOM-Element mit jQuery
Sagen Sie dem file
-input einfach, dass er das Formular bei jeder Änderung automatisch senden soll:
<form action="http://example.com">
<input type="file" onchange="form.submit()" />
</form>
Diese Lösung funktioniert folgendermaßen:
onchange
Lässt das Eingabeelement das folgende Skript ausführen, wenn das value
geändert wirdform
verweist auf das Formular, zu dem dieses Eingabeelement gehörtsubmit()
bewirkt, dass das Formular alle Daten an die URL sendet, wie in angegeben action
Vorteile dieser Lösung:
id
s. Es erleichtert das Leben, wenn Sie mehrere Formulare auf einer HTML-Seite haben.Verwenden von 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 mit onchange
Ereignis:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" onchange="javascript:this.form.submit();">
</form>
jQuery
.change()
und .submit()
:
$('#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>
Dies ist meine Lösung zum Hochladen von Bildern, wenn der Benutzer die Datei ausgewählt hat.
HTML-Teil:
<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) {}
});
};
Versuchen Sie den folgenden Code mit 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>
Für diejenigen, die .NET WebForms verwenden, ist eine vollständige Seitenübermittlung möglicherweise nicht erwünscht. Verwenden Sie stattdessen dieselbe onchange
Idee, damit Javascript auf eine versteckte Schaltfläche klickt (z. B. <asp: Button ...) und die versteckte Schaltfläche den Rest übernimmt. Stellen Sie sicher, dass Sie eine display: none;
Taste drücken und nicht Visible="false"
.
HTML
<form id="xtarget" action="upload.php">
<input type="file" id="xfilename">
</form>
JAVASCRIPT PURE
<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>
Sie können diesen Code einfügen, damit Ihr Code mit nur einer Codezeile funktioniert
<input type="file" onchange="javascript:this.form.submit()">
Dadurch wird die Datei auf den Server hochgeladen, ohne auf die Schaltfläche "Senden" zu klicken