Moo*_*oon 131 html javascript javascript-events
假设我们有这个代码:
<form action='' method='POST' enctype='multipart/form-data'>
<input type='file' name='userFile'><br>
<input type='submit' name='upload_btn' value='upload'>
</form>
Run Code Online (Sandbox Code Playgroud)
结果如下:
当用户单击"浏览..."按钮时,将打开文件搜索对话框:
用户将通过双击文件或单击"打开"按钮来选择文件.
是否有一个Javascript事件,我可以用来在选择文件后收到通知?
Anu*_*rag 164
听取改变事件.
input.onchange = function(e) {
..
};
Run Code Online (Sandbox Code Playgroud)
Cle*_*lem 42
必须重新加载文件时,可以删除输入值.下次添加文件时,将触发"on change"事件.
document.getElementById('my_input').value = null;
// ^ that just erase the file path but do the trick
Run Code Online (Sandbox Code Playgroud)
Zan*_*non 12
jQuery方式:
$('input[name=myInputName]').change(function(ev) {
// your code
});
Run Code Online (Sandbox Code Playgroud)
这就是我用纯 JS 做的方式:
var files = document.getElementById('filePoster');
var submit = document.getElementById('submitFiles');
var warning = document.getElementById('warning');
files.addEventListener("change", function () {
if (files.files.length > 10) {
submit.disabled = true;
warning.classList += "warn"
return;
}
submit.disabled = false;
});
Run Code Online (Sandbox Code Playgroud)
#warning {
text-align: center;
}
#warning.warn {
color: red;
transform: scale(1.5);
transition: 1s all;
}
Run Code Online (Sandbox Code Playgroud)
<section id="shortcode-5" class="shortcode-5 pb-50">
<p id="warning">Please do not upload more than 10 images at once.</p>
<form class="imagePoster" enctype="multipart/form-data" action="/gallery/imagePoster" method="post">
<div class="input-group">
<input id="filePoster" type="file" class="form-control" name="photo" required="required" multiple="multiple" />
<button id="submitFiles" class="btn btn-primary" type="submit" name="button">Submit</button>
</div>
</form>
</section>
Run Code Online (Sandbox Code Playgroud)
尽管这是一个老问题,但它仍然是一个有效的问题。
预期行为:
Cancel
。带有演示的代码:
<!DOCTYPE html>
<html>
<head>
<title>File upload event</title>
</head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="userFile" id="userFile"><br>
<input type="submit" name="upload_btn" value="upload">
</form>
<script type="text/javascript">
document.getElementById("userFile").onchange = function(e) {
alert(this.value);
this.value = null;
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
解释:
onchange
事件处理程序用于处理文件选择事件中的任何更改。onchange
仅当元素的值更改时才会触发该事件。因此,当我们使用该字段选择同一文件时,input
不会触发该事件。为了克服这个问题,我this.value = null;
在事件函数的末尾设置了onchange
。它将所选文件的文件路径设置为null
. 因此,onchange
即使在选择同一文件时也会触发该事件。