J'ai un simple formulaire de téléchargement de fichiers. Comment le soumettre automatiquement lorsqu'un fichier a été sélectionné? Je ne veux pas que l'utilisateur clique sur le bouton Soumettre.
J'ai un simple formulaire de téléchargement de fichiers. Comment le soumettre automatiquement lorsqu'un fichier a été sélectionné? Je ne veux pas que l'utilisateur clique sur le bouton Soumettre.
Réponses:
Vous pouvez simplement appeler la submitméthode de votre formulaire en onchangecas de saisie de votre fichier.
document.getElementById("file").onchange = function() {
document.getElementById("form").submit();
};
Submit()appel déclenche l' submitévénement jQuery , mais ne déclenche pas le formulaire sous-jacent submit(). Vous pouvez bien sûr utiliser $('form')[0].submit()pour frapper l'élément DOM avec jQuery
Dites filesimplement à -input de soumettre automatiquement le formulaire en cas de modification:
<form action="http://example.com">
<input type="file" onchange="form.submit()" />
</form>
Cette solution fonctionne comme ceci:
onchangefait que l'élément d'entrée exécute le script suivant, chaque fois que le valueest modifiéform fait référence au formulaire dont cet élément d'entrée fait partiesubmit() oblige le formulaire à envoyer toutes les données à l'URL, comme spécifié dans actionAvantages de cette solution:
ids. Cela vous facilite la vie si vous avez plusieurs formulaires dans une seule page html.Utilisation de 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 avec onchangeévénement:
<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>
Ceci est ma solution de téléchargement d'image, lorsque l'utilisateur a sélectionné le fichier.
Partie 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) {}
});
};
Essayez le code ci-dessous avec 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>
Pour ceux qui utilisent .NET WebForms, une page complète peut ne pas être souhaitée. Au lieu de cela, utilisez la même onchangeidée pour que javascript clique sur un bouton caché (par exemple <asp: Button ...) et le bouton caché peut prendre le reste. Assurez-vous que vous faites un display: none;sur le bouton et non 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>
Vous pouvez mettre ce code pour que votre code fonctionne avec une seule ligne de code
<input type="file" onchange="javascript:this.form.submit()">
Cela téléchargera le fichier sur le serveur sans cliquer sur le bouton Soumettre