我的表格是
<form onSubmit="return disableForm(this);" action="upload.php" method="post" name="f" id="wizecho" enctype="multipart/form-data">
<input type="file" name="file" />
<button onClick="return disableForm(this),ajaxUpload(this.form,'wizecho_upload.php', '<br>Uploading image please wait.....<br>'); return false;">
Upload Image
</button>
</form>
上传图片。
在这里,我需要点击按钮上传图片,然后我才能使用onClick
事件。我想删除上传按钮,一旦在输入中选择了文件,我就想触发该事件。我该怎么办?
答案 0 :(得分:109)
在文件输入上使用更改事件。
$("#file").change(function(){
//submit the form here
});
答案 1 :(得分:62)
您可以在输入字段上订阅onchange事件:
<input type="file" id="file" name="file" />
然后:
document.getElementById('file').onchange = function() {
// fire the upload here
};
答案 2 :(得分:38)
这是一个较旧的问题,需要一个更新的答案,以解决@Christopher Thomas在接受答案的评论中所关注的问题。如果您不离开页面然后再次选择文件,则需要在单击或执行touchstart(移动设备)时清除该值。即使您离开页面并使用jquery:
,下面的内容也能正常工作//the HTML
<input type="file" id="file" name="file" />
//the JavaScript
/*resets the value to address navigating away from the page
and choosing to upload the same file */
$('#file').on('click touchstart' , function(){
$(this).val('');
});
//Trigger now when you have selected any file
$("#file").change(function(e) {
//do whatever you want here
});
答案 3 :(得分:0)
在文件成功加载后执行任何操作。就在文件处理完成后,将文件控件的值设置为空字符串。因此即使文件名更改或不更改,.change()也会始终被调用。例如,您可以做这件事,并像魅力一样为我工作
$('#myFile').change(function () {
LoadFile("myFile");//function to do processing of file.
$('#myFile').val('');// set the value to empty of myfile control.
});
答案 4 :(得分:0)
vue用户的解决方案,当您多次上传同一文件并且未触发@change事件时解决问题:
<input
ref="fileInput"
type="file"
@click="onClick"
/>
methods: {
onClick() {
this.$refs.fileInput.value = ''
// further logic for file...
}
}
答案 5 :(得分:0)
onFileChange(e) {
//upload file and then delete it from input
self.$refs.inputFile.value = ''
}
答案 6 :(得分:0)
使用es6的香草js
document.querySelector('input[name="file"]').addEventListener('change', (e) => {
const file = e.target.files[0];
// todo: use file pointer
});
答案 7 :(得分:0)
<input id="fusk" type="file" name="upload" style="display: none;"
onChange=" document.getElementById('myForm').submit();"
>