Javascript 处理表单提交时的文件解析和上载
我正在用JavaScript将一个Excel文件解析为一个数组,我有一个带有文件上传和复选框的简单表单。我正在修改来自其他地方的代码,它在文件上传时会像预期的那样立即完美运行,但我希望它在单击提交时处理文件,而不是在addEventListener上进行“更改”。如何更改此JavaScript/jQuery,使其以与现在相同的方式执行handleFile,但在表单submit click上 我尝试了多种方法,比如Javascript 处理表单提交时的文件解析和上载,javascript,jquery,html,excel,Javascript,Jquery,Html,Excel,我正在用JavaScript将一个Excel文件解析为一个数组,我有一个带有文件上传和复选框的简单表单。我正在修改来自其他地方的代码,它在文件上传时会像预期的那样立即完美运行,但我希望它在单击提交时处理文件,而不是在addEventListener上进行“更改”。如何更改此JavaScript/jQuery,使其以与现在相同的方式执行handleFile,但在表单submit click上 我尝试了多种方法,比如 document.getElementById('submit').addEven
document.getElementById('submit').addEventListener("click", handleFile(oFileIn));
并将设置下的所有内容封装在:
$('#submit').click(function(){
var oFileIn; ...
});
HTML:
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.12.6/xlsx.full.min.js"></script>
</head>
<body>
<form id="formid" action="form.php" method="POST" enctype="multipart/form-data">
<label><input id="inputX1" type="checkbox" name="x1" value="x1">x1</label><br>
<label><input id="inputX2" type="checkbox" name="x2" value="x2">x2</label><br>
<label><input id="inputX3" type="checkbox" name="x3" value="x3">x3</label><br>
<label><input id="inputX4" type="checkbox" name="x4" value="x4">x4</label><br>
<input id="fileid" type="file" name="filename" />
<input id="submit" type="button" value="submit"/>
</form>
</body>
</html>
因此,如果只想在按钮上加载数据,那么真正需要做的就是在按钮上放置一个单击侦听器,而不是在文件输入上放置一个更改事件 您的尝试已接近成功,但由于我们可以使用文件输入的ID,因此无需将任何内容传递到
handleFile()
在我们继续阅读之前,我还做了一个检查,以确保文件确实存在
下面是一个使用jQuery的示例
function setup() {
$("#submit").on("click", handleFile);
var rABS = true;
function handleFile() {
var files = $("#fileid").prop("files");
if(files.length === 0){
alert("Please select a file first");
return;
}
var f = files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
//continue on with data
}
reader.readAsText(f);
}
}
您希望将文件提交到某种服务器吗?您希望在提交表单时发生什么情况?这通常意味着向服务器发送请求,然后将用户发送到另一个页面。您的意思是只希望文件操作在单击按钮时发生,而不一定是提交操作吗?在提交作为文本文件下载的数组时,也可以正常工作。它可以在任何按钮点击,不必特别提交。
function setup() {
$("#submit").on("click", handleFile);
var rABS = true;
function handleFile() {
var files = $("#fileid").prop("files");
if(files.length === 0){
alert("Please select a file first");
return;
}
var f = files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
//continue on with data
}
reader.readAsText(f);
}
}