ฉันมีรูปแบบการอัปโหลดไฟล์ที่เรียบง่าย ฉันจะทำให้มันส่งโดยอัตโนมัติได้อย่างไรเมื่อเลือกไฟล์แล้ว? ฉันไม่ต้องการให้ผู้ใช้คลิกปุ่มส่ง
ฉันมีรูปแบบการอัปโหลดไฟล์ที่เรียบง่าย ฉันจะทำให้มันส่งโดยอัตโนมัติได้อย่างไรเมื่อเลือกไฟล์แล้ว? ฉันไม่ต้องการให้ผู้ใช้คลิกปุ่มส่ง
คำตอบ:
คุณสามารถเรียกsubmit
วิธีการแบบฟอร์มของคุณในonchange
กรณีที่มีการป้อนไฟล์ของคุณ
document.getElementById("file").onchange = function() {
document.getElementById("form").submit();
};
Submit()
โทรเรียก jQuery submit
เหตุการณ์ submit()
แต่ไม่ได้ยิงรูปแบบพื้นฐาน แน่นอนคุณสามารถใช้$('form')[0].submit()
เพื่อเข้าชมองค์ประกอบ DOM ด้วย jQuery
เพียงแค่แจ้งfile
-input ให้ส่งแบบฟอร์มโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลง:
<form action="http://example.com">
<input type="file" onchange="form.submit()" />
</form>
วิธีนี้ใช้ได้ผลดังนี้:
onchange
ทำให้อิลิเมนต์อินพุตเรียกใช้สคริปต์ต่อไปนี้เมื่อใดก็ตามที่value
ถูกแก้ไขform
อ้างอิงแบบฟอร์มว่าองค์ประกอบอินพุตนี้เป็นส่วนหนึ่งของsubmit()
ทำให้ฟอร์มส่งข้อมูลทั้งหมดไปยัง URL ตามที่ระบุใน action
ข้อดีของการแก้ปัญหานี้:
id
s มันทำให้ชีวิตง่ายขึ้นถ้าคุณมีหลายรูปแบบในหน้า html เดียวใช้ 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 กับonchange
เหตุการณ์:
<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>
หากคุณใช้ jQuery ง่ายอยู่แล้ว:
<input type="file" onChange="$(this).closest('form').submit()"/>
นี่คือโซลูชันการอัพโหลดรูปภาพของฉันเมื่อผู้ใช้เลือกไฟล์
ส่วน 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) {}
});
};
ลองรหัสร้องด้วย 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>
สำหรับผู้ที่ใช้. NET WebForms อาจไม่ต้องการส่งหน้าเต็ม ให้ใช้onchange
ความคิดเดิมเพื่อให้จาวาสคริปต์คลิกที่ปุ่มที่ซ่อนอยู่ (เช่น <asp: ปุ่ม ... ) และปุ่มที่ซ่อนสามารถใช้เวลาที่เหลือได้ ให้แน่ใจว่าคุณกำลังทำปุ่มและไม่display: none;
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>
คุณสามารถใส่รหัสนี้เพื่อให้รหัสของคุณทำงานด้วยรหัสบรรทัดเดียว
<input type="file" onchange="javascript:this.form.submit()">
จะทำการอัพโหลดไฟล์บนเซิร์ฟเวอร์โดยไม่ต้องคลิกที่ปุ่มส่ง