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 submitMethode Ihres Formulars bei der onchangeEingabe Ihrer Datei einfach aufrufen .
document.getElementById("file").onchange = function() {
document.getElementById("form").submit();
};
Submit()löst der Aufruf das jQuery- submitEreignis 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:
onchangeLässt das Eingabeelement das folgende Skript ausführen, wenn das valuegeä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 actionVorteile dieser Lösung:
ids. 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 onchangeEreignis:
<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 onchangeIdee, 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